Android デバイスの構成の変更 (たとえば、「ハード キーボードを元に戻す」など) は常に を呼び出しPhoneWindow.onConfigurationChanged()
、次にそれが を呼び出しますreopenMenu()
。これにより、現在実行中のアクティビティのメニューが表示されている場合に、そのメニューが再度開かれます。
onPrepareOptionsMenu()
オーバーライドに実装されているメニューにロックがあります。ユーザーは、メニューを表示するたびにコードを入力する必要があります。構成が変更されたためにメニューがまだ表示されている間に、ユーザーがコードを再度入力するように求められることは望ましくありません。したがって、現在のフォアグラウンド アクティビティのメニューが既に表示されているかどうかを確認する方法はありますか? これを知っていれば、メニューが既に表示されている場合は、アクセス コードを要求することを回避できます。
私のカスタム回避策の実装は、戻るボタンがクリックされた場合にmenuShowing
設定onPrepareOptionsMenu
およびリセットする独自の flag を使用することです。onOptionsItemSelected
onKeyDown
EDIT:
画面の向きの構成を変更しても、この動作はトリガーされないようです。ただし、ハード キーボード スライドは使用できます。