Efaz
Efaz

Reputation: 304

Error changing menu item visibility in Android

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

Upvotes: 2

Views: 263

Answers (1)

Bharadwaj Giridhar
Bharadwaj Giridhar

Reputation: 1237

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

Upvotes: 1

Related Questions