方法一:
关联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管理;