私は、ユーザーがbackPressedメソッドをオーバーライドして戻るボタンを押したときに確認ダイアログを表示するロジックを作ったが、これは異常な動作を意味する。ソフト入力キーボードが表示されている場合は、バックキーイベントでは非表示にし、他のバックキーイベントでは確認ダイアログを起動する必要があります。これを達成する方法がありますか?おそらくソフト入力キーボードがアップしているかどうかを検出し、確認ダイアログをバイパスしますか?ここでアプリケーションを終了するための確認ダイアログを表示するために、バックプレス(keyDown - 以前のバージョン)を処理する方法は?
が、これは明確にするコードサンプルです:ソフトキーパッドを隠すために
public boolean onKeyUp(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
//here is the mystery
if (soft keyboard is visible)
{
return super.onKeyUp(keyCode, event);
} else
{
//method which shows the close dialog and close the application
onBackPressed();
return true;
}
}
return super.onKeyUp(keyCode, event);
}
はい、そうです。実際の問題は、私がonKeyDownとonKeyUpの両方をオーバーライドし、double backPressedを呼び出すようにしたことでした。今私はonKeyDownだけをオーバーライドし、ソフトキーボードはイベントを消費します。別の奇妙な動作が発生しました。つまり、新しいバックキーイベントが検出されたときです。onBackPressedは無視されます。私はそれを処理しなければならない。良い答えをありがとう。 –