Error changing menu item visibility in Android

Viewed 173

I am trying to change the visibility of a menu item. This is what I have:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        actionStop = menu.findItem(R.id.action_stop);

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.appbar_menu, menu);

        
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        if(item.getItemId() == R.id.action_roll){
            rollDice();
            actionStop.setVisible(true);
        }

I am doing this actionStop.setVisible(true); to change the value. However I am getting this error:

 java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.MenuItem.setVisible(boolean)' on a null object reference
1 Answers

Can you try putting this line

        actionStop = menu.findItem(R.id.action_stop);

after the menu has been inflated? and try using item to set visibility instead of the variable?

ie,

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.appbar_menu, menu);
    actionStop = menu.findItem(R.id.action_stop);
    
    return true;
}
    @Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {

    if(item.getItemId() == R.id.action_roll){
        rollDice();
        item.setVisible(true);
    }
Related