按下“后退"按钮时更新导航抽屉(使用DrawerLayout) [英] Updating the Navigation Drawer (with DrawerLayout) when back button is pressed
问题描述
我正在设计带有导航抽屉的Android应用程序.可以说我浏览了片段并从Fragment 1
转到Fragment 2
.一切正常,但是当我进入Fragment 2
(从导航抽屉加载)并单击系统后退按钮时,尽管我得到了上一个片段(我使用addToBackStack
),导航抽屉没有更新,并且单元格Fragment 2
突出显示.我该怎么做才能解决此问题?
I am designing an app on the Android with a Navigation Drawer. Lets say I navigate through fragments and go from Fragment 1
to Fragment 2
. Everything works fine but when I am in Fragment 2
(which loads from the navigation drawer) and click the system back button althought I get the previous fragment (I use addToBackStack
) the navigation drawer doesn't get updated and the cell of Fragment 2
is highlighted. What should I do to fix this?
推荐答案
找到了解决方案:
在每个addToBackStack
中添加标签.因此,如果我调用addToBackStack
,则代码如下所示:
Added a tag in every addToBackStack
. So the code if I call addToBackStack
it looks like this:
addToBackStack("Fragment1");
addToBackStack("Fragment2");
每当我将每个片段放入堆栈时. 然后我覆盖按下的后退按钮:
whenever I put each fragment to the stack. Then I override the back button pressed:
@Override
public void onBackPressed() {
super.onBackPressed();
FragmentManager fm = getSupportFragmentManager();
String stackName = null;
for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
stackName = fm.getBackStackEntryAt(entry).getName();
Log.i("BC", "stackEntry" + entry);
}
if (stackName == "Fragment1"){
mDrawerList.setItemChecked(0, true);
} else if (stackName == "Fragment2") {
mDrawerList.setItemChecked(1, true);
}
}
这篇关于按下“后退"按钮时更新导航抽屉(使用DrawerLayout)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!