如何获得以前的片段?
How to get previous fragments?
为了在我的应用程序中重用一些片段,我需要知道哪个片段是返回堆栈中的第二个片段。
为此,我使用了 getFragmentManager().getFragments()
,它显示了以下错误(但有效!)
FragmentManager.getFragments can only be called from within the same library group (groupId=com.android.support)
使用安全吗?我可以通过其他方法获得相同的结果吗?
代码如下:
public Fragment getCallerFragment(){
List<Fragment> fragments = getFragmentManager().getFragments();
return fragments.get(fragments.size()-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());
}
你也可以把tag/id放到fragments中,通过id获取
val fragment = supportFragmentManager.findFragmentByTag(tag)
其他
Nouman Ch 解决方案将为您效劳。
如果我们将两个答案放在一起,您可以将 TAG 添加到您的片段并使用此方法获取以前的片段名称:
private String getCallerFragment(){
FragmentManager fm = getFragmentManager();
int count = getFragmentManager().getBackStackEntryCount();
return fm.getBackStackEntryAt(count - 2).getName();
}
为了在我的应用程序中重用一些片段,我需要知道哪个片段是返回堆栈中的第二个片段。
为此,我使用了 getFragmentManager().getFragments()
,它显示了以下错误(但有效!)
FragmentManager.getFragments can only be called from within the same library group (groupId=com.android.support)
使用安全吗?我可以通过其他方法获得相同的结果吗?
代码如下:
public Fragment getCallerFragment(){
List<Fragment> fragments = getFragmentManager().getFragments();
return fragments.get(fragments.size()-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());
}
你也可以把tag/id放到fragments中,通过id获取
val fragment = supportFragmentManager.findFragmentByTag(tag)
其他 Nouman Ch 解决方案将为您效劳。
如果我们将两个答案放在一起,您可以将 TAG 添加到您的片段并使用此方法获取以前的片段名称:
private String getCallerFragment(){
FragmentManager fm = getFragmentManager();
int count = getFragmentManager().getBackStackEntryCount();
return fm.getBackStackEntryAt(count - 2).getName();
}