后退按钮显示不正确的片段

时间:2016-07-20 21:58:24

标签: android android-fragments fragmenttransaction

关于后退按钮和Fragments,我遇到了一些奇怪的行为。这是我的情况,我有3个Fragmentsf1f2和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

我选中了onCreateViewf1 f2。可能导致f2 Fragment出现的原因是什么?

2 个答案:

答案 0 :(得分:0)

您可以处理后退按钮并检查片段焦点并手动执行正确的流程

答案 1 :(得分:0)

是的,可以通过将所有片段添加到Backstack来实现。

当BackButton按下并且CurrentFragment为f3时,写入

super.onbackPressed()一次两次。