找不到菜单项

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");

我希望这可以帮助任何和我犯同样错误的人。