我正在尝试从onOptionsItemSelected(MenuItem item)方法外部更改菜单项的标题。
onOptionsItemSelected(MenuItem item)
我已经做了以下事情;
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; }
但是我希望能够在此方法之外修改特定菜单项的标题。
正如 JxDarkAngel 建议的那样,从 Activity 的任何地方调用它,
invalidateOptionsMenu();
然后覆盖:
@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); }