我的应用程序包含两个选项卡,在两个选项卡中每个选项卡有4-5个嵌套片段,嵌套片段中的外接程序堆栈不工作吗?如何将嵌套片段添加到后台,因为当我单击嵌套片段中的后退按钮时,我的应用程序即将关闭,这意味着它正在调用super.onBackKeyPressed方法。
发布于 2018-04-30 06:56:54
将此代码添加到活动中
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
if (fm.getFragments() != null) {
for (Fragment frag : fm.getFragments()) {
if (frag.isVisible()) {
FragmentManager chilFrag = frag.getChildFragmentManager();
if (chilFrag.getBackStackEntryCount() > 0) {
chilFrag.popBackStack();
return;
}
}
}
}
super.onBackPressed();
}发布于 2018-04-30 06:48:30
你应该使用ChildFragmentManager
这是片段替换函数。
fun replace(fragment: Fragment){
childFragmentManager
.beginTransaction()
.replace(R.id.fragmentContainer, fragment)
.commit()
}并在大多数父片段中重写onBackPressed方法。
override fun onBackPressed() {
val pop = childFragmentManager.popBackStackImmediate()
if (!pop){
super.onBackPressed()
}}
我和kotlin一起写的,我希望你可以understand.If你需要更多的信息,请问我。
发布于 2018-04-30 06:57:31
使用ChildFragmentManager并检查活动选项卡是否有BackStackEntry,如果有,则弹出Back堆栈,否则调用super.onBackKeyPressed
关于这个答案的完整描述:https://stackoverflow.com/a/37961649/4832356
https://stackoverflow.com/questions/50095265
复制相似问题