在我的活动中,我从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。
Y'
答案 0 :(得分:2)
也许这是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);
}
}