ProgressDialogのOnCancellistenerでの仕上げアクティビティは機能しません
-
28-10-2019 - |
質問
私のアクティビティでは、Webサービスからいくつかのデータをロードします。この間、ユーザーにProgressDialogを表示します。ユーザーに、D-PADキーを押すとアクティビティを閉じることができます。私はそれを次のようにしました:
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();
}
}
あなたは私が現在の活動を終えていることがわかります oncancel() ダイアログの方法 oncancellistener インターフェース。しかし、この方法は、ダイアログ中に押し戻すときに呼び出されません。ダイアログは消えますが、オンキャンセルは呼び出されません。
y?
解決
おそらくそれはAndroidの制限です。ハンドラーを使用して試してみてください
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);
}
}
所属していません StackOverflow