si no tiene suerte con el método onCancel(), puede escribir un método onKeyDown() en su actividad para comprobar si se muestra el cuadro de diálogo de progreso y si se presiona el botón Atrás ... o puede anular el método onBackPressed() (nuevamente, para la actividad) y verificar si su diálogo se está mostrando. alternativamente, puede extender la clase ProgressDialog y anular onBackPressed() directamente desde allí ... en cuyo caso no tendría que comprobar si se muestra el cuadro de diálogo.
por ejemplo. para el método de la actividad:
public void onBackPressed()
{
if (progressDialog.isShowing())
{
// DO SOMETHING
}
}
la onKeyDown() método sería similar, sin embargo tendría que comprobar si el diálogo está mostrando, si el botón se presiona el botón es 'trasero', y también se debe hacer una llamada a super.onKeyDown() para asegurarse de que el método predeterminado también se ejecute.
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing())
{
// DO SOMETHING
}
// Call super code so we dont limit default interaction
super.onKeyDown(keyCode, event);
return true;
}
con cualquier método, la variable/propiedad progressDialog, obviamente, tiene que ser en su alcance y accesible.
No es el botón cancelar, estoy hablando del 'botón Atrás' (uno de los botones físicos) en la parte inferior del teléfono. – michael
¿Lo has probado? El botón Atrás debería disparar el evento cancelar. – AndrewKS
No. No funciona. Establecí un punto de interrupción en onCancel(), nunca se llama. – michael