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