android-如何通过视图ID获取FragmentManager?
作者:互联网
如何获取视图的FragmentManager?
假设我有这样的布局:
<?xml version="1.0" encoding="utf-8"?>
...
<fragment android:name="com.example.MyFragment"
android:id="@+id/thefragmentsid" >
</fragment>
...
这是我的伪代码(我知道甚至都不存在FragmentView,但我想你知道我的意思)
FragmentView fw = (FragmentView) activity.findViewById( R.id.thefragmentsid );
FragmentManager goal = fw.getFragment().getFragmentManager();
这是一个用例示例:
public class MyFragment extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate( R.layout.my_fragments_view, container, false );
}
}
public class MainActivity extends FragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById( R.id.thefragmentsid ).setOnTouchListener( new OnTouchListener(){
@Override
public boolean onTouch( View v, MotionEvent event ){
FragmentView fw = (FragmentView) findViewById( R.id.thefragmentsid );
FragmentManager fm = fw.getFragment().getFragmentManager();
// Do something with the fragment manager
return false;
}
} );
}
}
编辑:我无法以任何方式访问任何片段对象.也许有一个隐藏的方法,但正是我要的!
下一步编辑:(稍后再完成问题)我正在使用Google支持包!
PS:我不想提供太多涉及的信息,因为这是一个普遍的问题,需要一个普遍的答案,并且可能偶尔出现.
解决方法:
好吧,我知道这确实是我自己的错误.我以为它必须是一个名为getFragmentManager()的函数,但这正是错误所在.
由于我使用的是Google支持包,因此正确的函数称为getSupportFragmentManager().
但是必须说有一个很大的陷阱,因为即使在带有Support Package的Fragment内部,也可以使用Fragments函数getFragmentManager(),但是在FragmentActivity内部,它突然是getSupportFragmentManager().
我承认这是极大的耻辱,尤其是我认为使用支持包不会成为必要的信息.我以为这样可以使问题更笼统,但我看不到应该保留任何信息.对于未来的问题:)
标签:android-fragments,android 来源: https://codeday.me/bug/20191202/2084690.html