活动泄露窗口令牌异常

时间:2015-02-05 08:45:10

标签: android android-ui

我正在向用户显示一个可运行的对话框并给他两个按钮,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();

2 个答案:

答案 0 :(得分:2)

在完成活动之前,在两种情况下都添加调用方法dismiss()。

此异常会引发,因为您在对话框中保留对Activity的引用,而Activity已被销毁。

答案 1 :(得分:1)

在退出执行上述代码的活动之前,您需要调用dismiss()

所有窗户和在离开活动之前应该关闭对话框。