安卓异常 "The specified child already has a parent..."

标签 android layout dialog

我收到如下异常。谁能帮帮我?

06-16 11:32:48.237: ERROR/AndroidRuntime(9223): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

        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();

我在这里浏览了很多线程,但我遗漏了一些东西。 提前致谢。

最佳答案

一个 View 只能有一个父 View 。您正在添加的 View (我猜是重复使用)已经是另一个 View 层次结构的一部分。如果您真的想重用它(我建议您可能不要),那么您必须将它从其现有 View 层次结构中的父级分离。

ECGField.get(0) 返回的任何内容都已经在 View 层次结构中。

关于安卓异常 "The specified child already has a parent...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371277/

相关文章:

android - 如何监控我的应用在 android 中发出的 HTTP(获取、发布等)请求

java - 获取 Android 应用程序使用的数据/信息

android getSupportActionBar().setTitle 在使用 volley 解析 Json 时不起作用

CSS:扩展为可折叠导航栏的流体布局

css - 左侧为完整菜单,右侧为两个内容 Pane : DIV-and-CSS-only approach?

Qt 信号到特定对象的插槽

Android自定义对话框如 'Quick Contact'

android - 如何在 android 中以编程方式更新 dropbox 中的记录?

android - 如何在单个 xml 可绘制对象中添加超过 1 个形状

JavaFX(Java 8 Update 40) 警告对话框无法成功重绘和调整大小