2010-08-30 9 views
11

Solía ​​onKeyDown función en la actividad ..... pero cuando se hace clic en el botón Atrás botón que primero se cancela el cuadro de diálogo y se va con nuestra actividad . ..I quiere que ambos ya sea tanto cuadro de diálogo actividad y cerrado cuando clic en el botón de retroceso o desactivar el botón de retroceso cuando se muestra el cuadro de diálogo ...Cómo deshabilitar el botón de retroceso cuando el cuadro de alerta está en la pantalla

puede cualquiera sugerir soluciones para esto ....

Gracias de antemano,


actualización

Hola Gracias por su respuesta. El progressDialog con .setCancelable(false); funciona bien.

Pero aquí quiero algo diferente. Cuando se está ejecutando el cuadro de diálogo de progreso, presionaré la tecla ATRÁS y quiero mostrar un cuadro de diálogo de alerta para que el usuario pueda notificar que el progreso se está ejecutando.

¿Hay alguna solución al respecto?

Por favor, ayúdame.

Gracias de antemano.

Respuesta

58

¿Usted intentó establecer su propiedad en false setCancelable()

Algo como esto

progressDialog.setCancelable(false); 
+10

- esto funciona con AlertDialog también ... por si acaso alguien necesita saber. – dell116

2

Puede ser que esto ayudará en su caso:

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

Gracias por su respuesta. El problema fue hace mucho tiempo. Lo intentaré si tengo tiempo. – gsmaker

+0

solo para llegar tarde que nunca :) –

0

Sólo quiero mejorar @MoJo respuesta

alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 

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


       return false; 
     } 
}); 
+0

Entonces podrías haber editado mi respuesta –

0

Personalmente, una solución de limpieza fue finalizar la actividad de inicio de sesión antes de iniciar la intención en lugar de establecer indicadores en el paquete de la actividad nueva o anular cualquier método. Pruebe algo como este a continuación, donde Inicio de sesión es su actividad de inicio de sesión y Inicio es la primera actividad después de iniciar sesión con éxito en el usuario.

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

"Quiero tanto ya sea la actividad y la ventana de diálogo cerrados"

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

"o deshabilitar el botón de retroceso cuando se muestra el cuadro de diálogo" Esto puede bloquear volver de diálogo. Cuando se crea de forma dinámica, añadir:

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

Volviendo verdadera es la prevención de este cuadro de diálogo se cierre, y que no se puede cerrar haciendo clic en la espalda. También sugiero que agregue:

dialog.setCanceledOnTouchOutside(false); 

Lo que impedirá que el usuario cierre el cuadro de diálogo haciendo clic fuera de él.

Cuestiones relacionadas