我有一个包含导航抽屉的应用程序其中一个片段是我希望应用程序的主片段当后退按钮按下一些其他片段转到主片段时,例如,如果用户按下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}
总结 以上是内存溢出为你收集整理的java – 按下后退按钮时如何使片段替换为特定片段全部内容,希望文章能够帮你解决java – 按下后退按钮时如何使片段替换为特定片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)