请帮助我理解当调用“onBackPressed”时,回栈是如何在本地工作的。我注意到,即使从视觉上看它返回到了前一个片段,但应该弹出的片段(我退出的片段)仍然在回栈中。这是为什么?我将不得不求助于
@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() > 0)
getFragmentManager().popBackStack();
}
这似乎违反了直觉。那么在一个不在后栈顶部的片段上是真的吗?那么不太多的栈...
编辑:澄清一下,我的问题是为什么onBackPressed还没有弹出回栈,而需要一个额外的调用来弹出它作为一个解决方案?如果这只是它的方式,我很好,但我希望确认。
3条答案
按热度按时间vu8f3i0k1#
Android应用有一个Activity堆栈。当在Activity上调用onBackPressed时,它会弹出上一个Activity并完成当前Activity
如果您有一个带有片段的Activity,则会有另一个堆栈(Activity的片段堆栈),如果您按照解决方案建议的方式重写onBackPressed,则可以控制该堆栈,以便Activity在其所有片段都被弹出之前不会完成
6ovsh4lw2#
只需拨打
ffx8fchx3#
在下面添加行:
您可以在此处找到解决方案。