找不到菜单项
Can't find menu item
编辑:已解决,我在答案中详细说明了解决方案。
我可能遗漏了一些简单的东西,我认为解决方案很简单,但我找不到。
我的问题是我想动态更改菜单项的文本(显示在导航抽屉中),但是当我尝试使用 findItem(R.id.item1)
时,我得到一个空值。
这是我尝试更改文本的代码:
// call invalidateOptionsMenu(); to refresh
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.item1).setTitle("Some random text");
return super.onPrepareOptionsMenu(menu);
}
还有我的菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/group_users"
android:checkableBehavior="single">
<item
android:id="@+id/item1"
android:icon="@drawable/util_bleu_24dp"
android:title="@string/item1"/>
<item
android:id="@+id/item2"
android:icon="@drawable/util_rose_24dp"
android:title="@string/item2"/>
</group>
当我尝试执行它时出现错误:
java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.MenuItem.setTitle(java.lang.CharSequence)' on a null object reference
谁能帮我找出问题所在?
在创建一个新项目以尝试将其清理干净后,我发现我忘了在我的代码中添加这部分:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.personnal_menu, menu);
return true;
}
这创建了另一个与我试图修改的菜单不同的菜单,并且在这个新菜单上完美运行。所以其实我只是在搜索错误的问题。
解决方案 是这样做的(activity 中的任何地方):
NavigationView navigationView = findViewById(R.id.nav_view_left);
Menu menu = navigationView.getMenu();
MenuItem item1 = menu.findItem(R.id.item1);
item1.setTitle("Some random text");
我希望这可以帮助任何和我犯同样错误的人。
编辑:已解决,我在答案中详细说明了解决方案。
我可能遗漏了一些简单的东西,我认为解决方案很简单,但我找不到。
我的问题是我想动态更改菜单项的文本(显示在导航抽屉中),但是当我尝试使用 findItem(R.id.item1)
时,我得到一个空值。
这是我尝试更改文本的代码:
// call invalidateOptionsMenu(); to refresh
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.item1).setTitle("Some random text");
return super.onPrepareOptionsMenu(menu);
}
还有我的菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/group_users"
android:checkableBehavior="single">
<item
android:id="@+id/item1"
android:icon="@drawable/util_bleu_24dp"
android:title="@string/item1"/>
<item
android:id="@+id/item2"
android:icon="@drawable/util_rose_24dp"
android:title="@string/item2"/>
</group>
当我尝试执行它时出现错误:
java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.MenuItem.setTitle(java.lang.CharSequence)' on a null object reference
谁能帮我找出问题所在?
在创建一个新项目以尝试将其清理干净后,我发现我忘了在我的代码中添加这部分:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.personnal_menu, menu);
return true;
}
这创建了另一个与我试图修改的菜单不同的菜单,并且在这个新菜单上完美运行。所以其实我只是在搜索错误的问题。
解决方案 是这样做的(activity 中的任何地方):
NavigationView navigationView = findViewById(R.id.nav_view_left);
Menu menu = navigationView.getMenu();
MenuItem item1 = menu.findItem(R.id.item1);
item1.setTitle("Some random text");
我希望这可以帮助任何和我犯同样错误的人。