在我的活动中,我从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();
}
}
您可以看到我正在Dialog的OnCancelListener接口的onCancel()方法中完成当前活动。但是当对话框可见时按BACK时不会调用此方法。对话框消失,但不会调用onCancel。
是啊
最佳答案
也许这是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);
}
}