Dialog第二次点击报错

错误信息如下:

自定义dialog,里面添加了一个自定义布局,一不小心报错。

 java.lang.IllegalStateException: The specified child               already has a parent. You must call removeView() on the child's parent first(自view已经有了父view,你必须先移除父view的子view)

通常我们出现这样的问题会想着找到getparent(),然后移除。但是我试了好久没有找到解决的方法,最后发现我创建
LayoutInflater inflater = getLayoutInflater();这句话的时候由于顺序不对,而导致再次打开dialog,inflater又创建了一次,从而出错。所以我们代码应该如下:

 builder = new AlertDialog.Builder(MainActivity.this);//builder创建
 LayoutInflater inflater = getLayoutInflater();//Inflate创建
 dialog = inflater.inflate(R.layout.dialog, (ViewGroup)findViewById(R.id.dialog));//自定义的布局
 datePicker2 = (DatePicker) dialog.findViewById(R.id.myDatePicker2);//布局里面的控件
 builder.setTitle("选择查询的日期");
 builder.setView(dialog);//添加自定义布局
 builder.setIcon(R.mipmap.ic_launcher);
 builder.show();//显示dialog

你可能感兴趣的:(遇到的bugs,android进阶之路)