如何在android.support.v4.app.Fragment中获取FragmentManager?
获取support.v4版FragmentManager在Fragment内部的方法
别担心,我刚好处理过一模一样的场景!用support.v4库的Fragment时,获取对应版本的FragmentManager其实比你想的简单,关键是要区分开原生和支持库的API边界:
核心解决方案:直接调用
getFragmentManager()
只要你的Fragment是继承自android.support.v4.app.Fragment(这一点一定要确认,别不小心继承了原生的android.app.Fragment),在Fragment内部直接调用getFragmentManager(),返回的就是android.support.v4.app.FragmentManager实例,完全适配你的导航场景。嵌套Fragment的特殊处理
如果你的Fragment里还要嵌套子Fragment,那得用getChildFragmentManager()来获取当前Fragment专属的子Fragment管理器——这个方法返回的同样是support.v4版本的管理器,专门用来管理当前Fragment下的子Fragment事务。
给你贴个实际可运行的代码示例:
// 务必确保继承的是android.support.v4.app.Fragment public class MyNavFragment extends android.support.v4.app.Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 获取对应support.v4的FragmentManager android.support.v4.app.FragmentManager supportFm = getFragmentManager(); // 这里可以执行你的导航事务,比如替换主容器里的Fragment // supportFm.beginTransaction() // .replace(R.id.main_content_container, new TargetFragment()) // .addToBackStack(null) // .commit(); return inflater.inflate(R.layout.fragment_my_nav, container, false); } }
小提醒:尽量在Fragment生命周期的稳定阶段调用这个方法,比如onCreateView()、onViewCreated()或者onActivityCreated()之后,这时候Fragment已经和Activity完成绑定,不会返回null。
内容的提问来源于stack exchange,提问作者Edwin Owen
相关产品推荐
相关产品推荐

