1. ホーム

[解決済み】Androidでメニュー項目のテキストを動的に変更する方法

2022-04-05 02:45:54

質問

の外からメニュー項目のタイトルを変更しようとしています。 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 が提案したように、これを アクティビティ ,

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