我正在尝试从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);
}

是更好的选择。我使用了https://stackoverflow.com/a/17496503/568197的答案

关于java - 如何在Android中动态更改菜单项文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7066657/

10-12 04:02