我看到了这篇文章,但这里发布的解决方案对我没有用:get the latest fragment in backstack
当我替换一个片段时,我使用以下代码:
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.replace(android.R.id.tabcontent, fragment, tag);
ft.addToBackStack(null);
ft.commit();
请注意,我正在使用标签来检测任何片段。
我特别遇到的问题是:
假设我有 fragment_A、fragment_B 和 fragment_C。我可以从 fragment_A 或 fragment_B 到达 fragment_C,并且根据调用的父级别,我需要执行特定的操作。所以,我需要恢复后退堆栈中的最后一个 FRAGMENT。
当我尝试这样做时:
FragmentManager fm = getSupportFragmentManager();
for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
String ide = fm.getBackStackEntryAt(entry).getName();
Log.i("TAG", "Found fragment: " + ide);
}
我得到了null值。如果我使用getId(),我会得到数字,因此我尝试做:
int id = fm.getBackStackEntryAt(entry).getId();
Fragment fragment = fm.findFragmentById(id);
Log.i("TAG", "Found fragment: " + fragment.getTag());
但是我得到了null值..我不知道还能做什么,所以非常感谢任何帮助。
编辑:我在onBackPressed() { ...}中调用这些方法。