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