我得到的例外情况如下。有人能帮助我吗?
06-16 11:32:48.237:ERROR / AndroidRuntime(9223): java.lang.IllegalStateException:指定的子节点已经有了 家长。您必须首先在孩子的父母身上调用removeView()。
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.view.ViewGroup.addViewInner(ViewGroup.java:1970)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.view.ViewGroup.addView(ViewGroup.java:1865)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.view.ViewGroup.addView(ViewGroup.java:1822)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.view.ViewGroup.addView(ViewGroup.java:1802)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at com.mVisum_philips.MainECGActivity.popupEvent(MainECGActivity.java:628)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at com.mVisum_philips.MainECGActivity$1.onClick(MainECGActivity.java:195)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.view.View.performClick(View.java:2408)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.view.View$PerformClick.run(View.java:8816)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.os.Handler.handleCallback(Handler.java:587)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.os.Handler.dispatchMessage(Handler.java:92)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.os.Looper.loop(Looper.java:123)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at java.lang.reflect.Method.invokeNative(Native Method)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at java.lang.reflect.Method.invoke(Method.java:521)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
06-16 11:32:48.237: ERROR/AndroidRuntime(9223): at dalvik.system.NativeStart.main(Native Method)
screen_pop_up.xml 的源代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:layout_width="match_parent">
<LinearLayout android:id="@+id/headerLin" android:layout_width="fill_parent" android:layout_height="wrap_content">
<RelativeLayout android:layout_height="wrap_content" android:id="@+id/relativeLayout1" android:layout_width="fill_parent">
<Button android:layout_width="wrap_content" android:id="@+id/button1" android:layout_height="wrap_content" android:text="Done"></Button>
<LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:orientation="horizontal" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:layout_height="wrap_content" android:background="@drawable/h_scale" android:id="@+id/button2" android:layout_width="wrap_content" android:padding="15sp"></Button>
<Button android:layout_height="wrap_content" android:background="@drawable/v_scale" android:id="@+id/button3" android:layout_width="wrap_content" android:padding="14sp"></Button>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
<LinearLayout android:id="@+id/linLin" android:layout_height="300sp" android:layout_width="250sp">
</LinearLayout>
</LinearLayout>
获取异常的源代码如下:
final Dialog myDialog = new Dialog(MainECGActivity.this);
myDialog.setContentView(R.layout.screen_pop_up);
myDialog.setTitle("My Dialog");
LinearLayout myLin = (LinearLayout) myDialog.findViewById(R.id.linLin);
**myLin.addView(ECGField.get(0));**
myDialog.setCancelable(true);
Button button = (Button) myDialog.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
myDialog.dismiss();
}
});
myDialog.show();
我在这里经历了很多线索,但我遗漏了一些东西。 提前谢谢。
答案 0 :(得分:9)
视图只能有一个父级。您要添加的视图(我猜测重新使用)已经是另一个视图层次结构的一部分。如果你真的想重用它(我建议你可能不这样做),那么你必须将它从现有视图层次结构中的父节点中分离出来。
ECGField.get(0)返回的内容已经存在于视图层次结构中。