The specified child already has a parent. You must call removeView() on the child's parent first.

在activity中,点击一个button的时候,就创建一个对话框,当点击第二次的时候,本想再次弹出那个对话框,但是没想到就报错了:

意思是这个子view 已经有个父view了,你现在要使用的话,必须把子view从父view中移除掉。


/*
		 * 新建对话框,
		 */
		dialog = new AlertDialog.Builder(this).setTitle("选择时间")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						hour.setText(hours.getHour() + ";小时");
						min.setText(mins.getMin() + ";分鐘");
						daytxt.setText(day.getDay() + ";天數");

						/**
						 * 取得view的父组件,然后移除view
						 */
						((ViewGroup) view.getParent()).removeView(view);
						dialog.dismiss();

					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						dialog.dismiss();
					}

				});
		dialog.setView(view);

这里,网上的方法很多,我也没看懂。其实,这里只须在对话框消失的时候,移除子view就可以了。

主要是这一句话:

/**
						 * 取得view的父组件,然后移除view
						 */
						((ViewGroup) view.getParent()).removeView(view);

注意:

1.view类里面是没有removeview()这个方法的,只有其子类 viewgroup 才有,所以需要把view转换为它的子类。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值