代码之家  ›  专栏  ›  技术社区  ›  kike

如何获取以前的片段?

  •  6
  • kike  · 技术社区  · 7 年前

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

    为了做到这一点,我正在使用 getFragmentManager().getFragments()

    碎片管理器。getFragments只能从同一个库组中调用(groupId=com.android.support)

    使用安全吗?我能用另一种方法得到同样的结果吗?

    代码如下:

    public Fragment getCallerFragment(){
        List<Fragment> fragments = getFragmentManager().getFragments();
        return fragments.get(fragments.size()-2);
    }
    
    3 回复  |  直到 7 年前
        1
  •  10
  •   Knyhuus    7 年前

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

    private String getCallerFragment(){
            FragmentManager fm = getFragmentManager();
            int count = getFragmentManager().getBackStackEntryCount();
            return fm.getBackStackEntryAt(count - 2).getName();
        }
    
        2
  •  4
  •   Nouman Ch    7 年前

    使用此方法可以获得反堆栈中的计数数

    使用此方法获取片段

    GetBackbackEntryAt(int索引)

    FragmentManager fm = getFragmentManager();
    
    for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
       Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
    }
    
        3
  •  4
  •   Arutha    7 年前

    您还可以将标签/id放入片段,并按id获取它们

    val fragment = supportFragmentManager.findFragmentByTag(tag)
    

    其他的