La actividad de acabado en el OnCancellistener de Progressdialog no funciona
-
28-10-2019 - |
Pregunta
En mi actividad, cargo algunos datos de un servicio web, durante esto muestro un progreso dialog al usuario ... Quiero que el usuario pueda cerrar la actividad al presionar la tecla D-PAD. Lo he hecho de la siguiente manera:
public class MyActivity implements OnCancelListener {
/* ... */
public void startDialog() {
ProgressDialog pd = ProgressDialog.show(
MyActivity.this, // Context
"", // title for dialog
"Loading...", // message for dialog
true, // indeterminate?
true, // cancellable?
this // onCancelListener()
);
}
@Override
public void onCancel(DialogInterface dialog) {
// I want to finish() this activity when dialog is canceled
finish();
}
}
Puedes ver que estoy terminando la actividad actual en OnCancel () Método de diálogo Oncancellistener interfaz. Pero este método no se llama cuando presiono hacia atrás durante el cuadro de diálogo es visible. El diálogo desaparece pero OnCancel no se llama.
Y?
Solución
Quizás sea la restricción de Android. Pruébalo usando Handler
public class MyActivity implements OnCancelListener {
/* ... */
private Handler mHandler = new Handler(){
@Owerride
public void handleMessage(Message message) {
switch (message.what) {
case 1:{
finish();
} break;
}
}
};
public void startDialog() {
ProgressDialog pd = ProgressDialog.show(
MyActivity.this, // Context
"", // title for dialog
"Loading...", // message for dialog
true, // indeterminate?
true, // cancellable?
this // onCancelListener()
);
}
@Override
public void onCancel(DialogInterface dialog) {
mHandler.sendEmptyMessage(1);
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow