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

来源:互联网 发布:电子印章生成器软件 编辑:程序博客网 时间:2024/06/08 11:17

    方法一:

关联activity的生命周期

在activity中重写

@Overrideprotected 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管理;


阅读全文
0 0