l'activité de finition sur OnCancelListener de ProgressDialog ne fonctionne pas
-
28-10-2019 - |
Question
Dans mon activité, je charge des données à partir d'un service Web, pendant ce temps, je montre un ProgressDialog à l'utilisateur ... je veux que l'utilisateur puisse fermer l'activité en appuyant sur la touche BACK D-Pad. Je l'ai fait comme suit:
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();
}
}
Vous pouvez voir que je termine l'activité en cours dans la méthode onCancel () de l'interface OnCancelListener de Dialog.Mais cette méthode n'est pas appelée lorsque j'appuie sur RETOUR pendant que la boîte de dialogue est visible.La boîte de dialogue disparaît mais onCancel n'est pas appelé.
Oui?
La solution
C'est peut-être une restriction Android.Essayez-le en utilisant le gestionnaire
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);
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow