onBackPressed需要popBackStack

时间:2015-02-17 14:59:23

标签: android android-fragments android-fragmentactivity

请帮助我了解后台堆栈如何在" onBackPressed"叫做。我注意到,即使在视觉上它回到了前一个片段,但是应该弹出的片段(我退出的片段)仍然在后面的堆栈中。这是为什么? 然后我将不得不求助于

    @Override
    public void onBackPressed() {
        if(getFragmentManager().getBackStackEntryCount() > 0)
             getFragmentManager().popBackStack();
    }

这似乎违反直觉。 那么在一个不在后面堆栈顶部的片段是真的吗?然后不是很多堆栈......

编辑:澄清一下,我的问题是为什么onBackPressed没有弹出后台堆栈,需要额外的调用才能将其作为变通方法弹出?我很好,如果它只是这样,但我想要确认。

2 个答案:

答案 0 :(得分:1)

Android应用有一堆活动。当在活动上调用onBackPressed时,它会弹回上一个活动并完成当前的活动

如果您有一个带有片段的活动,您将拥有另一个堆栈,活动的片段堆栈,您可以控制是否以solution建议的方式覆盖onBackPressed,直到您的活动无法完成他们所有的碎片都被弹回了

答案 1 :(得分:-1)

添加以下行:

addToBackStack("Some String").commit();

您可以找到解决方案 Here