【问题标题】:Is there a way to see what fragments are in a FrameLayout?有没有办法查看 FrameLayout 中有哪些片段?
【发布时间】:2019-11-01 20:25:21
【问题描述】:

我有片段 obj 和 FrameLayout,如果可以的话,我也可以完成我的逻辑:

获取我的片段 containerViewId

看看片段在哪个 FrameLayout 中?

【问题讨论】:

    标签: android android-fragments android-framelayout fragment-backstack


    【解决方案1】:

    这样做:

    getSupportFragmentManager().findFragmentById(R.id.your_frame_layout);
    

    它返回框架布局中的片段

    更新

    获取您在框架布局中添加的所有片段(不是所有框架布局):

            FragmentManager mFragmentManager = getSupportFragmentManager();
            mFragmentManager.beginTransaction().add(R.id.your_frame_layout, /*your Fragment*/).commit();
    
            //get all fragments that you added to mFragmentManager
            List<Fragment> fragmentList = mFragmentManager.getFragments();
    

    【讨论】:

    • 感谢 Ehsan 的回复,这将返回添加到框架布局中的最后一个片段,而不是所有已添加的片段。有没有办法做到这一点?
    • @JoseFlores 您应该将您的片段添加到片段管理中(不要替换),您可以通过调用getSupportFragmentManager().getFragments() 获得所有的列表,它会返回一个列表Fragment.
    • .getFragments() 的问题是它也会返回其他 FrameLayouts 中的片段...
    • @JoseFlores 你可以这样做:FragmentManager mFragmentManager = getSupportFragmentManager() 现在你可以在你的框架布局上使用mFragmentManager。对于获取所有片段mFragmentManager.getFragments(),它仅返回您使用mFragmentManager添加的片段
    • getId() 返回 Fragment 添加到的 FrameLayout 的 id,允许您过滤 Fragment 列表。
    【解决方案2】:

    (FrameLayout) fragment.getView().getParent() 试试看。它可能会为您提供该片段附加到的框架布局。

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      相关资源
      最近更新 更多