如何在 Android 中动态更改菜单项文本

发布于 2022-07-28 23:14:26

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

但是我希望能够在此方法之外修改特定菜单项的标题。

关注者
0
被浏览
12
1 个回答
  • 面试哥
    面试哥 2022-07-28
    为面试而生,有面试问题,就找面试哥。

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看