我正在向用户显示一个可运行的对话框并给他两个按钮,YES和NO。如果用户按NO,我只是完成了活动。如果用户按YES,我想开始另一个活动。这是对话框代码:
ad.setTitle("Title");
ad.setMessage("Do you want to exit?");
ad.setIcon(R.drawable.common_signin_btn_icon_light);
ad.setButton(AlertDialog.BUTTON_POSITIVE, "Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// OPEN UP REGISTRATION ACTIVITY AGAIN
ad.dismiss();
finish();
startActivity(new Intent(
ActivityCodeVerification.this,
ActivityRegister.class));
}
});
ad.setButton(AlertDialog.BUTTON_NEGATIVE, "No,Exit",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
ad.dismiss();
finish();
startActivity(new Intent(
ActivityCodeVerification.this,
ActivityRegister.class));
}
});
每当按下任何按钮时,我都会遇到此异常:
Activity com.Rp.chatout.ActivityCodeVerification has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4055a530 that was originally added here
我做错了什么? ad.show();
答案 0 :(得分:2)
在完成活动之前,在两种情况下都添加调用方法dismiss()。
此异常会引发,因为您在对话框中保留对Activity的引用,而Activity已被销毁。
答案 1 :(得分:1)
在退出执行上述代码的活动之前,您需要调用dismiss()
。
所有窗户和在离开活动之前应该关闭对话框。