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

时间:2018-04-30 06:47:05

标签: android android-fragments android-viewpager android-view android-tablayout

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

3 个答案:

答案 0 :(得分:2)

在您的活动中添加此代码

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

答案 1 :(得分:1)

您应该使用ChildFragmentManager

这是片段替换功能。

formSubmit(){
this.formName.patchValue({
         formControlName:''
          //or if one wants to change formControl to a different value on submit
          formControlName:'form value after submission'     
    });
}

在大多数父片段中覆盖onBackPressed方法。

fun replace(fragment: Fragment){
  childFragmentManager
    .beginTransaction()
    .replace(R.id.fragmentContainer, fragment)
    .commit()
}

}

我用kotlin写信我希望你能理解。如果你需要更多信息,请问我。

答案 2 :(得分:0)

使用ChildFragmentManager并检查有效标签是否有BackStackEntry,如果有,则弹出后退,然后拨打super.onBackKeyPressed

这个答案的完整描述: https://stackoverflow.com/a/37961649/4832356