Android开发之自定义Dialog二次打开报错问题解决

在Android开发中,遇到自定义Dialog二次打开时出现`java.lang.IllegalStateException`错误。问题根源在于Dialog的子视图已被绑定到不同父视图。尽管将自定义view设为局部变量可避免问题,但这会影响程序效果。解决方案是每次Dialog关闭时将view置为null,重新获取布局,确保每次都是新的实例,同时更新自定义布局的控件引用。
摘要由CSDN通过智能技术生成

                 之前自定义了一个AlertDialog对话框,第一次点击时正常,但第二次调用时会出现错误:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

             关于这个错误纠结了我好久,在网上百度了也不少,但感觉解决效果都达不到自己想要的效果。网上的解释说是一个子视图指定了多个父视图。由此可以推断出,在第二次点击按钮弹出对话框时,子视图与第一次点击时的子视图是同一个对象,而父视图已经不再是同一个对象了。但感觉说的云里雾里的,经过我研究之后,发现了我认为的很好的解决方法,想分享给大家交流一下。

代码如下所示:

 

builder = new AlertDialog.Builder(MainActivity.this);
				builder.setView(null);
			  
				builder.setView(dialogview);
				
				builder.setTitle("记账");
				builder.setPositiveButton("确定", new OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
			
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值