You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:12:43