`
bcyy
  • 浏览: 1822893 次
文章分类
社区版块
存档分类
最新评论

Android自定义Dialog二次调用报错解决方法:The specified child already has a parent. You must call removeView()

 
阅读更多

今天自定义了一个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();
	}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics