我想在单击菜单按钮“nav_calendar”或“nav_settings”时更改布局。但我的两个菜单按钮都出现“需要常量表达式”错误。
下面的代码是我的admin_activity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityAdminHomeBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.bottomNavigationView.setOnItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.nav_calendar:
replaceFragment(new ScheduleFragment());
break;
case R.id.nav_settings:
replaceFragment(new SettingsFragment());
break;
}
return true;
});
}
这是 nav_menu.xml
<item
android:id="@+id/nav_calendar"
android:icon="@drawable/ic_calendar"
android:title="@string/schedule"/>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="@string/Settings"/>
它应该更改设置和日历菜单之间的片段。
尝试用
itemId
注释开关变量
@IdRes
,以提示编译器它是一个资源引用(例如 R.id.nav_calendar
):
@IdRes int itemId = item.getItemId();
switch (itemId) {
case R.id.nav_calendar:
// ...
break;
// ...
}