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

是个更好的 Select .我用了https://stackoverflow.com/a/17496503/568197的答案

Java相关问答推荐

为什么如果数组列表中有重复项,我的代码SOMETIMES不返回true?

使用包私有构造函数强制子类Java类

在AnyLogic中增加变量计数

使用动态ID从json获取详细信息的Jolt规范

给定Java枚举类,通过值查找枚举

条件加载@ManyToMany JPA

如何获得执行人?

如何在Java中从XML中获取特定的 node ,然后将其删除?

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

我正在try 跟踪数组中最大的两个数字

为什么同步数据块无效?

Java堆中的许多java.time.ZoneRegion实例.ZoneId实例不应该被缓存吗?

如何在透视表中添加对计数列的筛选?

具有最大共同前景像素的图像平移优化算法

在应用程序运行时更改LookAndFeel

使用@ExceptionHandler的GlobalExceptionHandler还是来自服务器的REST应答的ResponseEntity?

在数组中查找素数时出现逻辑错误

Maven创建带有特定类的Spring Boot jar和普通jar

message.acknowledge()没有';在使用Spring Boot在ActiveMQ中读取消息后,t将消息出列

如何在java中从以百分比表示的经过时间和结束日期中找到开始日期