我的应用程序中有一个导航抽屉。我想在按钮水龙头上更改导航抽屉布局。但每次我切换布局,它只是添加到现有的导航抽屉(显示重复的条目),但我想将整个视图替换为新的。
我该如何实现?
请参阅我的代码
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布局的内容。
答案 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);
}