2010-08-30 14 views
11

Ho usato la funzione KeyDown nell'attività ..... ma quando si fa clic sul pulsante back , si annulla la finestra di dialogo e si passa alla nostra attività . ..Io vogliono sia uno sia l'attività di dialogo e di dialogo chiuso quando facendo clic sul pulsante indietro o disabilitare il tasto indietro quando viene visualizzata la finestra di dialogo ...Come disattivare il pulsante Indietro quando la casella di avviso è sullo schermo

uno può suggerire eventuali soluzioni per questo ....

Grazie in anticipo,


Aggiornamento

Ciao grazie per la risposta. progressDialog con .setCancelable(false); funziona correttamente.

Ma qui voglio qualcosa di diverso. Quando la finestra di avanzamento è in esecuzione, premo il tasto INDIETRO e voglio mostrare una finestra di avviso in modo che l'utente possa notificare che l'avanzamento è in corso.

C'è qualche soluzione al riguardo?

Per favore aiutatemi.

Grazie in anticipo.

risposta

58

Hai provato impostando la proprietà su false setCancelable()

Qualcosa di simile

progressDialog.setCancelable(false); 
+10

- questo funziona anche con AlertDialog ... nel caso in cui qualcuno abbia bisogno di sapere. – dell116

2

Può essere questo vi aiuterà nel vostro caso:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Show your Alert Box here 
     } 
     return false; 
    } 
+0

Grazie per la risposta. Il problema era molto tempo fa. Proverò se ho tempo. – gsmaker

+0

solo per essere in ritardo che mai :) –

0

Voglio solo migliorare @MoJo answer

alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 

     @Override 
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
       //Your handler 


       return false; 
     } 
}); 
+0

Quindi potresti aver modificato la mia risposta –

0

Personalmente una soluzione più pulita doveva terminare LoginActivity prima di iniziare l'intento invece di impostare Flags nel bundle della nuova attività o sovrascrivere qualsiasi metodo. Prova qui sotto qualcosa in cui Login è la tua attività di accesso e Home è la prima attività dopo aver effettuato l'accesso con successo all'utente.

finish(); 
Intent intent = new Intent(Login.this, Home.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
0

"Voglio sia uno sia l'attività e la finestra di dialogo chiusi"

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
    finish(); 
    return true; 
    } 
}); 

"o disabilitare il tasto indietro quando viene visualizzata la finestra di dialogo" Questo può bloccare tornare dalla finestra di dialogo. Quando si crea in modo dinamico, aggiungere:

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
    return true; 
    } 
}); 

Tornando vero è prevenire questa finestra di chiudere, e non può essere chiusa facendo clic su Indietro. Inoltre suggerisco di aggiungere:

dialog.setCanceledOnTouchOutside(false); 

Cosa impedirà all'utente di chiudere la finestra di dialogo facendo clic al di fuori di esso.

Problemi correlati