片段回栈和替换
Posted
技术标签:
【中文标题】片段回栈和替换【英文标题】:Fragment backstack and replace 【发布时间】:2019-07-11 15:01:28 【问题描述】:我有 2 个片段 A
和 B
。我从片段A
(A->B)
和addToBackStack()
添加了片段B
。现在,当我在片段B
中并按回时一切正常并返回A
。
但是当我在片段C
中时,我想通过检查getFragmentManager().findFragmentByTag("");
在片段管理器中存在 显示片段B
,然后我replace
这个片段。
问题是backstack
在这种情况下不起作用。我的意思是每当我按回片段 A 时 不 显示。我怎样才能保留 backstack
呢?
【问题讨论】:
你是否将 B 添加到 backstack 中? 你的 onBackPressed() 是否调用了超级方法? @VivekMishra 是的 @underoid 是的,我打电话。 【参考方案1】:这是我正在使用的代码
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.popBackStack(fragment.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction tx = fragmentManager.beginTransaction();
Log.v("on calling fragment", fragment + "==" + fragment.toString());
tx.replace(R.id.fl_main, fragment).addToBackStack(fragment.toString());
这给出了不同的特定backstack 被替换的每个片段的字符串。
【讨论】:
以上是关于片段回栈和替换的主要内容,如果未能解决你的问题,请参考以下文章
当 Fragment 被替换并放入回栈(或删除)时,它是不是保留在内存中?