java – 按下后退按钮时如何使片段替换为特定片段
作者:互联网
我有一个包含导航抽屉的应用程序其中一个片段是我希望应用程序的主片段当后退按钮按下一些其他片段转到主片段时,例如,如果用户按下fr1然后fr2然后fr3我想要它返回到主页按钮(其中fr1,2,3是导航抽屉的碎片,并注意到应用程序中有其他碎片我不希望他们按下后退按钮时返回到主页)
解决方法:
如果你的backstack中有多个片段,你将无法通过popBackStack()访问你的home片段,因为它只是反转最后一个操作.例如,你有3个片段(home,fr1,fr2),首先你会到达fr2,然后到家.如果你想直接在onBackPress()上获得home片段,你应该用你的home片段替换你当前拥有的片段.
@Override
public void onBackPressed() {
int stackCount = getFragmentManager().getBackStackEntryCount();
if (stackCount == 1) {
super.onBackPressed(); // if you don't have any fragments in your backstack yet.
} else {
// just replace container with fragment as you normally do;
FragmentManager fm = getFragmentManager();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);//clear backstackfirst and then you can exit the app onbackpressed from home fr
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.container, new HomeFragment());
transaction.commit();
}
}
编辑:
如何检查当前可见的片段
Fragment f = getFragmentManager().findFragmentById(R.id.container);
if (f instanceof HomeFragment) {
//do smth
}
标签:back-stack,android,java,android-studio,fragment 来源: https://codeday.me/bug/20191008/1875349.html