按下“后退"按钮时更新导航抽屉(使用DrawerLayout) [英] Updating the Navigation Drawer (with DrawerLayout) when back button is pressed

查看:107
本文介绍了按下“后退"按钮时更新导航抽屉(使用DrawerLayout)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在设计带有导航抽屉的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆