6

ナビゲーション ドロワー アクティビティと、ナビ ドロワー経由で到達する多くのフラグメントがあります。

これらのフラグメントのいくつかでは、バックグラウンド タスクが発生しているときに「読み込み中..」というダイアログを表示します。

dialog.setCancelable(false)これで、ユーザーが画面のどこかをクリックして誤ってダイアログを閉じないように、ダイアログをキャンセルできないようにしました。これにより、電話の戻るボタンを押してもキャンセルできなくなります。

これは私のダイアログのコードです -

Dialog dialog = new Dialog(context);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.custom_progress_dialog);
    ((TextView)dialog.findViewById(R.id.custom_dialog_message)).setText("Loading ...");

    dialog.setCancelable(false);     
    dialog.show();

フラグメントで電話の戻るボタンが押されたときに、読み込みダイアログを閉じて前のフラグメントに移動するコードを記述する必要があります。

誰か助けてくれませんか?ほとんどの場合、フラグメントに固有の backPress を実装する必要があります。ありがとう!

4

4 に答える 4

9

このように簡単です

dialog.setOnKeyListener(new Dialog.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                dialog.dismiss();
            }
            return true;
        }
    });
于 2015-09-30T10:19:41.383 に答える
8

あなたが使用することができます getFragmentManager().popBackStackImmediate();

dialog.setOnKeyListener(new Dialog.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                dialog.dismiss();
                getFragmentManager().popBackStackImmediate();
            }
            return true;
        }
    });
于 2015-09-30T10:28:22.037 に答える