ダイアログで動作する Android ライブラリを作成しました。Android 2.3.6 を搭載した Samsung Galaxy S1 Plus I9005 でテストしたところ、デバイスのメニュー ボタンを長押しすると、アクティブなダイアログがすぐに閉じられることがわかりました。そのボタンを長押しする目的すらわかりません。デバイスを知らない人のために、この写真は私が何を意味するかを示すはずです:
この問題は、Android 4.x で実行されているデバイスでは発生しません。Android 4.1.2 を実行している Samsung Galaxy S3 と、Android 4.0.3 カスタム ROM を搭載した Galaxy S1 でテストしましたが、問題ありませんでした。
onKeyDown
ダイアログを閉じないようにするために、 、onKeyUp
、onPrepareOptionsMenu
および関連すると思われるその他のメソッドをオーバーライドしようとしましたが、どれも成功したり、貴重な情報をもたらしたりしませんでした。デバッガーがオーバーライドできるメソッドに到達する前にダイアログが消えたため、これらのメソッドにデバッグしようとしたときに同じことが起こりました。
ダイアログは、次の方法を使用して作成されます。
@Override
public Dialog onCreateDialog(final int pId) {
Dialog dialog;
switch (pId) {
case LOADING_DIALOG:
dialog = DialogCreator.createLoadingDialog(MyActivity.this));
break;
default:
dialog = null;
}
super.onCreateDialog(pId);
return dialog;
}
以下DialogCreator
を使用して AlertDialog を作成するだけです。
new AlertDialog.Builder(pContext).create();
ダイアログがキャンセルされないようにするために、次を追加しました。
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setCancelable(false);
なぜこれがダイアログを閉じているのか誰にも分かりますか?
編集
「デスクトップ」にいる間、メニュー ボタンを長押しすると、Google 検索が開始されます。