私のアクティビティでは、Web サービスからいくつかのデータをロードします。この間、ProgressDialog をユーザーに表示します...ユーザーが BACK 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();
}
}
ダイアログのOnCancelListenerインターフェイスのonCancel()メソッドで現在のアクティビティを終了していることがわかります。しかし、ダイアログが表示されているときにBACKを押すと、このメソッドは呼び出されません。ダイアログは消えますが、onCancel は呼び出されません。
え?