android.view.WindowLeaked 问题彻底解决【dialog导致窗口泄露】

    方法一:

关联activity的生命周期

在activity中重写

@Override
protected Dialog onCreateDialog(int id) {
    Dialog dialog = new Dialog(this);
    return dialog;
  //  return super.onCreateDialog(id);
}

现实dialog使用

 showDialog(0);
方法


这样先finish了activity;dialog也会先被dismiss


方法二:

使用

DialogFragment进行dialog的管理
public class AlertDialogFragment2 extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new AlertDialog.Builder(getActivity()).setTitle("Title").setMessage("are you ok?")
                .setPositiveButton("Sure", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dismiss();
                    }
                }).setNegativeButton("cancel", null)
                .create();
    }
}
然后进行现实
 FragmentTransaction mFragTransaction = getFragmentManager().beginTransaction();
// Fragment fragment =  getFragmentManager().findFragmentByTag("dialogFragment");
 AlertDialogFragment2 dialogFragment = new AlertDialogFragment2();
 dialogFragment.show(mFragTransaction, "dialogFragment");//显示一个Fragment并且给该Fragment添加一个Tag,可通过findFragmentByTag找到
这样finsh之前没有关闭dialog也不会导致窗口泄露;应为fragment会由activity管理;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jsoh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值