2015-09-30 6 views
5

ナビゲーション・ドロワー・アクティビティとナビゲーション・ドロワーを介して届く多くのフラグメントがあります。フラグメントbackPressでキャンセル不可能なダイアログを閉じる - Android

これらのフラグメントの中には、バックグラウンドタスクが実行されている間に「読み込み中」というダイアログが表示されるものがあります。

今やダイアログボックスをキャンセルできないようにしました。ユーザーが画面上のどこかをクリックして間違って閉じることがないように、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を実装する必要があります。ありがとう!

答えて

6

あなたは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; 
     } 
    }); 
+0

感謝を使用することができます。うまくいった! – Mallika

+0

私の喜び.... –

6

それはあなたのコード行削除この

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; 
     } 
    }); 
5

ように簡単です:あなたのダイアログが誤ってユーザーならばキャンセルしません

dialog.setCancelable(false); 

をして、この1を入れて、これにより

dialog.setCanceledOnTouchOutside(false); 

を試してみてください画面上をタッチするが、ユーザが戻るボタンを押すとキャンセルされる。

さらに、前のフラグメントに戻るために
関連する問題