问题描述
我已经实现了Navigation Drawer,它是Activity的子类.我的应用程序中有很多片段.我的问题在这里
I have implemented Navigation Drawer which is a subclass of Activity. I have many fragments in my application. My question goes here
想象一下有3个片段:
Fragment_1:Fragment_2:Fragment_3
Fragment_1 : Fragment_2 : Fragment_3
启动我的应用程序时,将加载Fragment_1当我单击Fragment_1上的某些组件时,我导航到Fragment_2,依此类推.
When I start my application, Fragment_1 is loadedWhen I click on some components on Fragment_1, I'm navigated to Fragment_2 and so on..
所以就像
Fragment_1> Fragment_2> Fragment_3
Fragment_1 > Fragment_2 > Fragment_3
当我从Fragment_2按返回键时,我导航回到Fragment_1但是,当我从Fragment_3按返回键时,我导航回到Fragment_1(而不是Fragment_2)
When I press back key from Fragment_2, I'm navigated back to Fragment_1But when I press back key from Fragment_3, I'm navigated back to Fragment_1 (instead of Fragment_2)
我希望在按Back键的应用程序中有类似的内容
I want something like this in my application on Back Key press
Fragment_1<Fragment_2<Fragment_3
Fragment_1 < Fragment_2 < Fragment_3
我已经如下使用Fragment,FragmentManager,FragmentTransaction:
I have used Fragment, FragmentManager, FragmentTransaction as follows :
MyFragment fragment = new MyFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(null)commit();
,然后我尝试在MainActivity中重写onBackPressed():
and I tried overriding onBackPressed() in my MainActivity :
@Override
public void onBackPressed() {
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0)
super.onBackPressed();
}
推荐答案
将您的 Activity#onBackPressed()
方法更新为:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
您的实现无效的原因是因为方法 FragmentManager#popBackStack()
是异步的,调用后不会立即发生.
The reason your implementation doesn't work is because the method FragmentManager#popBackStack()
is asynchronous and does not happen right after it is called.
从文档中:
这篇关于Android:返回时返回上一个片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!