如何将嵌套片段添加到选项卡式视图寻呼机内的 backstack?

How to add nested fragment to backstack inside a tabbed view pager?

我的应用程序包含两个选项卡,在两个选项卡内每个选项卡都有 4-5 个嵌套片段,在嵌套片段内 addtobackstack 不起作用? 我如何将嵌套片段添加到后台堆栈,因为当我单击嵌套片段内的后退按钮时,我的应用正在关闭意味着它正在调用 super.onBackKeyPressed 方法。

你应该使用 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你需要更多信息,请问我。

将此代码添加到您的 activity

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();
}

使用 ChildFragmentManager 并检查活动选项卡是否有 BackStackEntry,如果有则弹出 backstack 否则调用 super.onBackKeyPressed

关于这个答案的完整描述: