現在、次のようなオプションメニューがあります。
アイテム 1 をクリックすると、次のように 2 つの新しいアイテムがメニューに追加されるとします。
onCreateOptionsMenu は一度しか呼び出されず、onPrepareOptionsMenu は電話のメニューボタンがクリックされたときにのみ呼び出されるように見えるため、実行時 (開いている間) にこれを行うのに問題があります。これらの新しいアイテムが追加されてリフレッシュしたいだけです。
助けてくれてありがとう!
現在、次のようなオプションメニューがあります。
アイテム 1 をクリックすると、次のように 2 つの新しいアイテムがメニューに追加されるとします。
onCreateOptionsMenu は一度しか呼び出されず、onPrepareOptionsMenu は電話のメニューボタンがクリックされたときにのみ呼び出されるように見えるため、実行時 (開いている間) にこれを行うのに問題があります。これらの新しいアイテムが追加されてリフレッシュしたいだけです。
助けてくれてありがとう!
オプション項目を選択すると、システムはオプション メニューを閉じます。これは onOptionsItemSelected() の実行後に発生します。必要なのは、そのプロセス全体が完了してから、プログラムでオプションメニューを再度開いて、 onPrepareOptionsMenu() が呼び出されるようにすることだと思います。
これを試して:
onOptionsItemSelected() では、ユーザーが「さらに 2 つのオプションを追加」オプションを選択したときに、アクティビティにフラグを設定しますが、他には何もしません。
onOptionsMenuClosed() をオーバーライドします。フラグが設定されているかどうかを確認します。そうである場合は、次のパスで UI スレッドによって実行されるポスト。オプションメニューをもう一度開くだけです。
runOnUiThread(new Runnable() { @Override public void run() { openOptionsMenu(); } });
onPrepareOptionsMenu() をオーバーライドします。フラグが設定されているかどうかを確認します。そうである場合は、2 つのメニュー項目を追加し、フラグの設定を解除します。探している動作でない限り、「さらに項目を追加」メニュー項目が押されるたびに新しい項目を追加し続けるのを防ぐために、いくつかの追加作業を行う必要があります。