android中的导航抽屉重载问题

时间:2017-05-10 12:56:02

标签: android

我的应用程序中有一个导航抽屉。我想在按钮水龙头上更改导航抽屉布局。但每次我切换布局,它只是添加到现有的导航抽屉(显示重复的条目),但我想将整个视图替换为新的。

我该如何实现?

请参阅我的代码

    navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    if (checkIsLoggedIn()){
        navigationView.inflateMenu(R.menu.activity_main_drawer_logged_in);
    }
    else{
        navigationView.inflateMenu(R.menu.activity_main_drawer_logged_out);
        addHeaderLayout(navigationView);
      }

这里我根据checkIsLoggedIn()的状态在代码中夸大了activity_main_drawer_logged_in和activity_main_drawer_logged_out。

问题: 如果我在导航抽屉显示登录布局时从应用程序注销

然后,导航抽屉中显示了activity_main_drawer_logged_out和activity_main_drawer_logged_in布局的内容。

2 个答案:

答案 0 :(得分:1)

对代码进行这些更改

if (checkIsLoggedIn()){
    navigationView.getMenu().clear();
    navigationView.inflateMenu(R.menu.activity_main_drawer_logged_in);
}
else{
    navigationView.getMenu().clear();
    navigationView.inflateMenu(R.menu.activity_main_drawer_logged_out);
    addHeaderLayout(navigationView);
  }

答案 1 :(得分:0)

使用上述答案时遇到了问题。 显示重复的标题视图

我发现了一个更好的导航视图标题重复解决方案,同时动态添加标题视图。这是代码段。

if (navigationView != null) {
   for (int i = 0; i < navigationView.getHeaderCount(); i++) {
   if (navigationView.getHeaderView(i) != null)
   navigationView.getHeaderView(i).setVisibility(View.GONE);
   }
   addHeaderLayout(navigationView);
  }