自定义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