如何获得以前的片段?

时间:2017-09-20 14:34:12

标签: android android-fragments fragmentmanager

为了在我的应用程序中重用一些片段,我需要知道哪个片段是后端堆栈中的第二个片段。

为了做到这一点,我使用getFragmentManager().getFragments(),显示以下错误(但有效!)

  

FragmentManager.getFragments只能在同一个库组中调用(groupId = com.android.support)

使用安全吗?我可以通过另一种方法获得相同的结果吗?

以下是代码:

public Fragment getCallerFragment(){
    List<Fragment> fragments = getFragmentManager().getFragments();
    return fragments.get(fragments.size()-2);
}

3 个答案:

答案 0 :(得分:7)

如果我们将两个答案放在一起,您可以将TAG添加到您的片段中,并使用此方法获取之前的片段名称:

private String getCallerFragment(){
        FragmentManager fm = getFragmentManager();
        int count = getFragmentManager().getBackStackEntryCount();
        return fm.getBackStackEntryAt(count - 2).getName();
    }

答案 1 :(得分:3)

使用此方法获取backStack中的计数数

  

getBackStackEntryCount()

使用此方法获取片段

  

getBackStackEntryAt(int index)

您也可以执行类似

的操作
FragmentManager fm = getFragmentManager();

for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
   Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
}

答案 2 :(得分:2)

您还可以将标记的/ id放入片段并通过id

获取它们
val fragment = supportFragmentManager.findFragmentByTag(tag)

否则 Nouman Ch解决方案适合您。