-2

我在我的应用程序中使用 NavigationView 抽屉。如果用户按下后退按钮,我正在尝试返回上一个片段。此代码运行良好:

@Override
public void onBackPressed() {
    FragmentManager fm = getSupportFragmentManager();        
    Fragment fr = fm.findFragmentById(R.id.flContent);

    if (fm.getBackStackEntryCount() > 0 ) {
        fm.popBackStackImmediate();
    }
    else {
        finish();
    }        
}

但我的 NavigationView 没有改变。如何更新 NavigationView 状态(检查正确的片段、更改标题等),以便它可以反映我的应用程序中的更改?

4

2 回答 2

0

您应该使用 addToBackStack 方法实现后退导航。看看这个

于 2015-07-27T13:00:14.417 回答
0

我创建了一个解决方法:创建抽屉或单击 menuItem 时,我正在存储当前的 menuItem:

private void setupDrawerContent(NavigationView navigationView) {
    // Storing "home" menuItem when app starts
    storedMenuItem = navigationView.getMenu().getItem(0);

    navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
                    selectDrawerItem(menuItem);

                    // Storing menuItem when another item is selected
                    storedMenuItem = menuItem;

                    return true;
                }
            });
}

所以在我的 onBackPressed 方法中,我正在这样做:

  @Override
  public void onBackPressed() {
    selectDrawerItem(storedMenuItem);
  }

selectDrawerItem 没有变化(我使用了这段代码)

我不知道这是否是一个好的解决方案,但它工作得很好。

于 2015-07-27T14:54:00.047 回答