关闭活动结束时的对话框

时间:2013-03-06 10:02:30

标签: android android-dialog

在我的应用程序中,我有一个接一个的几个活动。登录屏幕后,我有主屏幕,然后是几个屏幕。现在当用户选择设备主页按钮或电源关闭按钮时,我想显示登录屏幕,当用户再次进入我的应用程序,然后是主屏幕。休息我从基类完成的所有活动。现在直到这里我已经完成了,我的问题是当我在其他活动中显示对话框时,如果用户点击主页或电源按钮,那么我得到 WINDOW LEAKED EXCEPTION

enter image description here

就像我有TempActivity正在显示一个对话框和用户点击主页按钮,所以StoreActivity和TempActivity将完成,但Dialog从未有机会被解雇。那么处理这种情况的最佳方法是什么呢? 有没有更好的方法来解雇对话框,这样我就不会有任何例外。

3 个答案:

答案 0 :(得分:1)

Dialog句柄放在成员对象中,然后在完成顶级活动时,首先关闭对话框。

你可以通过创建抽象的Activity类(你的所有活动都扩展)来使这个更加整洁,这会在调用finish()时忽略可能的对话

答案 1 :(得分:1)

覆盖onDestroy,在那里检查对话框是否存在,如果是,请将其解除。

答案 2 :(得分:1)

onDestroy()中的dismiss()并没有解决这个问题。尝试覆盖activity.finish(),如:

@Override
public void finish() {
    if(mDialog != null) {
        mDialog.dismiss();
    }
    super.finish();
}