需要在 onBackPressed 中使用 popBackStack
Need for popBackStack in onBackPressed
请帮助我了解调用 "onBackPressed" 时返回堆栈的本机工作方式。我注意到,即使在视觉上它回到了前一个片段,但应该弹出的片段(我退出的片段)仍在后堆栈中。这是为什么?
然后我将不得不求助于
@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() > 0)
getFragmentManager().popBackStack();
}
这似乎违反直觉。
那么位于不在返回堆栈顶部的片段上是真的吗?那么堆栈不多...
编辑:澄清一下,我的问题是为什么 onBackPressed 还没有弹出返回堆栈并且需要额外的调用来弹出它作为解决方法?如果只是这样的话我很好,但我想确认一下。
添加以下行:
addToBackStack("Some String").commit();
你可以找到解决方案 Here.
Android 应用有一堆活动。当在 activity 上调用 onBackPressed 时,它会弹出前一个 activity 并完成当前
如果你有一个带有片段的activity,你将有另一个堆栈,activity的片段堆栈,如果你按照solution建议的方式覆盖onBackPressed,你可以控制它你的 activity 直到他们的所有片段都被弹回
才完成
请帮助我了解调用 "onBackPressed" 时返回堆栈的本机工作方式。我注意到,即使在视觉上它回到了前一个片段,但应该弹出的片段(我退出的片段)仍在后堆栈中。这是为什么? 然后我将不得不求助于
@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() > 0)
getFragmentManager().popBackStack();
}
这似乎违反直觉。 那么位于不在返回堆栈顶部的片段上是真的吗?那么堆栈不多...
编辑:澄清一下,我的问题是为什么 onBackPressed 还没有弹出返回堆栈并且需要额外的调用来弹出它作为解决方法?如果只是这样的话我很好,但我想确认一下。
添加以下行:
addToBackStack("Some String").commit();
你可以找到解决方案 Here.
Android 应用有一堆活动。当在 activity 上调用 onBackPressed 时,它会弹出前一个 activity 并完成当前
如果你有一个带有片段的activity,你将有另一个堆栈,activity的片段堆栈,如果你按照solution建议的方式覆盖onBackPressed,你可以控制它你的 activity 直到他们的所有片段都被弹回
才完成