关于后退按钮和Fragments
,我遇到了一些奇怪的行为。这是我的情况,我有3个Fragments
,f1
,f2
和f3 .
Button
内有一个f1
f2
:
getSupportFragmentManager()
.beginTransaction()
.addToBackStack("f1")
.replace(R.id.fragHook, f2,
TAG).commit();
此交易完美无缺。我可以在找到的2个片段之间来回走动。在f2中,我有一个RecyclerView
,用户可以选择一个单元格。当用户选择一个单元格时,我会调出f3
,但我不会将f2
添加到后台堆栈中:
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragHook, f3)
.commit();
正确显示Fragment
f3
。在第一次使用此过程时,我单击后退按钮,再次正确显示f1
。如果我重复相同的步骤,问题就出现了。点击Button
中的f1
,会f2
显示RecyclerView
。然后选择一个单元格第二次显示f3
。现在,当我单击后退按钮时,会出现片段f2
。
我选中了onCreateView
和f1
f2
。可能导致f2
Fragment
出现的原因是什么?
答案 0 :(得分:0)
您可以处理后退按钮并检查片段焦点并手动执行正确的流程
答案 1 :(得分:0)
是的,可以通过将所有片段添加到Backstack来实现。
当BackButton按下并且CurrentFragment为f3时,写入
super.onbackPressed()一次两次。