Finire l'attività sull'oncancelListener di ProgressDialog non funziona
-
28-10-2019 - |
Domanda
Nella mia attività carico alcuni dati da un servizio Web, durante questo mostro un progresso. L'ho fatto come segue:
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();
}
}
Puoi vedere che sto finendo l'attività attuale Oncancel () Metodo di dialoghi Oncancellistener interfaccia. Ma questo metodo non viene chiamato quando premo indietro durante la finestra di dialogo è visibile. Il dialogo scompare ma l'Oncancel non viene chiamato.
Y?
Soluzione
Forse è una restrizione Android. Provalo usando il gestore
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);
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow