【问题标题】:How to get previous fragments?如何获取以前的片段?
【发布时间】:2026-02-23 00:15:02
【问题描述】:

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

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

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

使用安全吗?我可以通过其他方法得到相同的结果吗?

代码如下:

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

【问题讨论】:

    标签: android android-fragments fragmentmanager


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用此方法获取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());
      }
      

      【讨论】:

        【解决方案3】:

        你也可以把tag/id放到fragment中,通过id获取

        val fragment = supportFragmentManager.findFragmentByTag(tag)
        

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

        【讨论】: