对话框子视图Android自定义Dialog二次调用报错解决方法:The specified child already has a parent. You must call removeView()-java教程
上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助。明天在这里和大家一起学习一下对话框子视图
明天自定义了一个AlertDialog对话框,第一次点击时畸形,但第二次调用时会现错出误:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
错出的代码为:
//窗口构造器 synchronized protected View GetTextEntryView() { LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); switch (Dialog_TYPE) { case DIALOG_TYPE_EXIT://出退对话框 return inflater.inflate(R.layout.datalist, null); default: break; } return null; }
而示提的大致意思是说为一个子视图指定了多个父视图。由此可以推断出,在第二次点击按钮弹出对话框时,子视图与第一次点击时的子视图是同一个象对,而父视图经已不再是同一个象对了。
解决方法非常简略,只需要重写对话框的show()方法便可:
@Override//重写show()方法 public AlertDialog show() { //再次绑定View setView(GetTextEntryView()); return super.show(); }
文章结束给大家分享下程序员的一些笑话语录:
这个世界上只有10种人:懂得二进制的和不懂得二进制的。