选项菜单在运行时为空

Jac*_*ack 1 android nullpointerexception android-optionsmenu oncreateoptionsmenu

在我的应用程序中执行某些操作时,我正在更改特定菜单项的可绘制对象。

除了我尝试在 Activity 的 onCreate 方法中执行此操作时,一切都正常。

我正在使用以下方法:

menu.findItem(R.id.favorite).setIcon(R.drawable.ic_action_icons8_star_filled_100);
Run Code Online (Sandbox Code Playgroud)

在 onClick 事件中,它可以完美运行。

但是当我在 onCreate 中使用相同的方法时,它给了我以下错误:

java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.Menu.findItem(int)' on a null object reference
Run Code Online (Sandbox Code Playgroud)

这是我用来膨胀的代码 menu

private Menu menu;

--------------------


 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.image_details, menu);

        this.menu = menu;

        return super.onCreateOptionsMenu(menu);
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢。

Mut*_*ran 6

您可以使用 onPrepareOptionsMenu(只要菜单即将可见,就会收到一个电话)。您将获得空指针,因为 onCreateOptionsMenu 将在 onCreate 之后调用,因此您的菜单对象将为空。

@Override
 public boolean onPrepareOptionsMenu(Menu menu) {

    MenuItem favoriteItem = menu.findItem(R.id.favorite);

    favoriteItem.setIcon(getResources().getDrawable(R.drawable.drawable.ic_action_icons8_star_filled_100)); 

    return super.onPrepareOptionsMenu(menu);
 }
Run Code Online (Sandbox Code Playgroud)