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

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

The specified child already has a parent. You must call removeView() on the child's parent first._第1张图片

意思是这个子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转换为它的子类。

你可能感兴趣的:(android,使用)