I’m trying to change the title of a menu item from outside of the onOptionsItemSelected(MenuItem item)
method.
I already do the following;
public boolean onOptionsItemSelected(MenuItem item) { try { switch(item.getItemId()) { case R.id.bedSwitch: if(item.getTitle().equals("Set to 'In bed'")) { item.setTitle("Set to 'Out of bed'"); inBed = false; } else { item.setTitle("Set to 'In bed'"); inBed = true; } break; } } catch(Exception e) { Log.i("Sleep Recorder", e.toString()); } return true; }
however I’d like to be able to modify the title of a particular menu item outside of this method.
Advertisement
Answer
As JxDarkAngel suggested, calling this from anywhere in your Activity,
invalidateOptionsMenu();
and then overriding:
@Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item = menu.findItem(R.id.bedSwitch); if (item.getTitle().equals("Set to 'In bed'")) { item.setTitle("Set to 'Out of bed'"); inBed = false; } else { item.setTitle("Set to 'In bed'"); inBed = true; } return super.onPrepareOptionsMenu(menu); }
is a much better choice. I used the answer from https://stackoverflow.com/a/17496503/568197