android - NavigationView 所选项目颜色
问题描述
我有两个使用drawerLayout的布局,并且它们对navigationView使用相同的代码,问题是其中一个更改了所选项目的颜色,而另一个没有,即使它是相同的确切代码。这是xml代码:
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view_passager"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/menu_passager" />
和第一个布局的java:
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.acceuil_passager_item:
toolbar.setTitle("Accueil");
fm.beginTransaction().replace(R.id.frame_passager, new AcceuilPassagerFragment()).commit();
break;
case R.id.profile_item:
toolbar.setTitle("Profil");
fm.beginTransaction().replace(R.id.frame_passager, new PassagerProfileFragment()).commit();
break;
case R.id.historique_voyages_item_pass:
toolbar.setTitle("Historique des voyages");
fm.beginTransaction().replace(R.id.frame, new ListeTrajetsFragment()).commit();
break;
case R.id.futurs_voyages_item_pass:
toolbar.setTitle("Futurs voyages");
fm.beginTransaction().replace(R.id.frame_passager, new FutursVoyagesFragment()).commit();
break;
case R.id.log_out_item_pass:
Intent intent = new Intent(PassagerActivity.this, LoginActivity.class);
startActivity(intent);
mAuth.signOut();
finish();
Log.d(TAG, "onNavigationItemSelected: " + (mAuth == null));
break;
default:
break;
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
和第二个布局的java代码:
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.acceuil_item_conducteur:
setUpToolbar(item);
fm.beginTransaction().replace(R.id.frame_conducteur, new AcceuilConducteurFragment()).commit();
break;
case R.id.profile_item_cond:
setUpToolbar(item);
fm.beginTransaction().replace(R.id.frame_conducteur, new ConducteurProfileFragment()).commit();
break;
case R.id.historique_voyages_item_cond:
setUpToolbar(item);
fm.beginTransaction().replace(R.id.frame_conducteur, new HistoriqueVoyagesFragment()).commit();
break;
case R.id.log_out_item_cond:
Intent intent = new Intent(ConducteurActivity.this, LoginActivity.class);
startActivity(intent);
mAuth.signOut();
finish();
Log.d(TAG, "onNavigationItemSelected: " + (mAuth == null));
break;
default:
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
ps:两种布局都选择了“Profil”
解决方案
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group
android:id="@+id/menu_grp"
android:checkableBehavior="single">
原来 checkableBehavior = "single" 是检查菜单所选项目的原因,以及我的其他布局中缺少的内容
推荐阅读
- php - 在 cURL PHP 中发送请求时出现 401 未经授权的响应
- r - 为什么在运行 modindices 命令检查 SEM 改进时出现 R 错误“下标分配中不允许使用 NA”?
- mongodb - Mongo 4.2 使用 findAndModify 进行聚合
- python - 如何使用 timedelta 在两个不同时间之间添加/减去操作?
- c++ - 嵌入式 spv 着色器在运行程序时抛出错误
- android - 如何处理背压功能异常
- html - 如何通过css创建动态步骤向导树设计?
- spring-boot - passing application configuration using K8s configmaps
- r - 在 R 中的 ID 中使用重复测量时,如何为之前的观察值创建变量?
- java - 是否可以使用 SQLite 来存储翻译而不是像 strings.xml 这样的 XML 资源