2015-09-30 11 views
5

Ich habe eine Navigation Schublade Aktivität und viele Fragmente, die ich über die Nav-Schublade erreichen.Nicht kündbare Dialog auf Fragment zurücklassenPresse - Android

In einigen dieser Fragmente zeige ich einen Dialog, der "Loading .." sagt, während Hintergrundaufgaben stattfinden.

Jetzt habe ich meine Dialoge nicht kündbar gemacht von dialog.setCancelable(false), so dass der Benutzer nicht versehentlich durch Klicken auf eine beliebige Stelle auf dem Bildschirm entlassen. Dies macht es unkündbar, auch wenn die Telefon-Zurück-Taste gedrückt wird.

Dies ist der Code für meinen Dialog -

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(); 

ich Code schreiben muß, das Laden Dialogfeld zu schließen und zum vorherigen Fragmente gehen, wenn das Telefon zurück-Taste, während auf jedem Fragment gedrückt wird.

Kann mir jemand helfen? Meistens muss ich backPress implementieren, das für ein Fragment spezifisch ist. Vielen Dank! Versehen

dialog.setCanceledOnTouchOutside(false); 

Damit Ihr Dialog wird nicht abbrechen, wenn der Benutzer

dialog.setCancelable(false); 

und dieses setzen und versuchen:

Antwort

6

können Sie 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

Dank Verwendung für die Zugabe zum vorherigen Fragmente zurück zu gehen. Gut gearbeitet! – Mallika

+0

mein Vergnügen .... –

6

Es einfach ist, da dies

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

Code Zeile entfernen Berühren Sie den Bildschirm, aber wenn der Benutzer die Taste zurückdrückt, wird

abgebrochen