1. ホーム
  2. android

[解決済み] Android: ボタンクリックでオプションメニューの項目を有効/無効にするには?

2022-05-18 08:50:34

質問

を使っているときは簡単にできるのですが onCreateOptionsMenu または onOptionsItemSelected メソッドを使用します。

しかし、画面のどこかにボタンがあり、そのボタンをクリックすると、コンテキストメニューの項目が有効/無効になるはずです。

どのように解決するのですか?

とにかく ドキュメント がすべてをカバーしています。

実行時にメニュー項目を変更する

アクティビティが作成されると onCreateOptionsMenu() メソッドが呼び出されます。 は一度だけ呼び出されます。システムは を保持し、再利用します。 Menu このメソッドで定義した このメソッドで定義した アクティビティが破棄されるまで、システムはこのメソッドで定義した を保持し、再利用します。もし オプションメニューを変更する場合は をオーバーライドする必要があります。 は onPrepareOptionsMenu() メソッドをオーバーライドする必要があります。 このメソッドでは、現在存在するメニューオブジェクトを オブジェクトを渡します。これは、以下のような場合に便利です。 メニュー項目を削除したり、追加したり、無効にしたり、有効にしたりしたい場合 アプリケーションの現在の状態に応じて、メニュー項目を削除、追加、無効化、または有効化したい場合に便利です。 アプリケーションの現在の状態に応じて、メニュー項目を削除したり、追加したり、無効にしたり、有効にしたりしたい場合に便利です。

@Override
public boolean onPrepareOptionsMenu (Menu menu) {
    if (isFinalized) {
        menu.getItem(1).setEnabled(false);
        // You can also use something like:
        // menu.findItem(R.id.example_foobar).setEnabled(false);
    }
    return true;
}

Android 3.0以降では、アクションバーにメニュー項目が表示されている場合、オプションメニューは常に開かれているとみなされます。イベントが発生し、メニューの更新を行いたい場合は、メニューの更新を行うために invalidateOptionsMenu() を呼び出して、システムに onPrepareOptionsMenu() .