Ravi Malik
Ravi Malik

Reputation: 159

How to set visibility of one menu item false after clicking on another menu item

I am trying to set visibility of SaveMessage true after clicking on UnsaveMessage and visibility of Unsavemessage false but i only see on item and nothing happens on Onclick

My code

 private boolean isEditing = true;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_message,menu);



    menu.findItem(R.id.UnsavedMessage).setVisible(isEditing);
    menu.findItem(R.id.SaveMessage).setVisible(!isEditing);
    return super.onCreateOptionsMenu(menu);
}

@Override
public void supportInvalidateOptionsMenu() {
    super.supportInvalidateOptionsMenu();

}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    if(item.getItemId() == R.id.UnsavedMessage){
        isEditing=false;

    }
    if (item.getItemId()==R.id.SaveMessage){
        isEditing=true;

    }
    return true;
}

Upvotes: 0

Views: 440

Answers (1)

OhhhThatVarun
OhhhThatVarun

Reputation: 4321

You need to do this

private boolean isEditing = true;
private MenuItem unSavedMsg;
private MenuItem SaveMsg;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_message,menu);

    unSavedMsg = menu.findItem(R.id.UnsavedMessage)
    unSavedMsg .setVisible(isEditing);
    saveMsg = menu.findItem(R.id.SaveMessage)
    saveMsg .setVisible(!isEditing);
    return super.onCreateOptionsMenu(menu);
}

@Override
public void supportInvalidateOptionsMenu() {
    super.supportInvalidateOptionsMenu();
}

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

    if(item.getItemId() == R.id.UnsavedMessage){
        isEditing=false;
        // Show/Hide Btn here
        unSavedMsg.setVisibility(false)
        saveMsg.setVisibility(true)
    }
    if (item.getItemId()==R.id.SaveMessage){
        isEditing=true;
        // Show/Hide Btn here
        unSavedMsg.setVisibility(true)
        saveMsg.setVisibility(false)
    }
    return true;
}

Upvotes: 1

Related Questions