【问题标题】:NullPointerException when using .addView to ViewGroup使用 .addView 到 ViewGroup 时出现 NullPointerException
【发布时间】:2013-05-21 16:35:18
【问题描述】:

我正在尝试使用.addView 将另一个LinearLayout 添加到ViewGroup

我在 LogCat 上收到以下错误:

05-21 16:23:04.096: E/AndroidRuntime(2086): 致命异常: main 05-21 16:23:04.096: E/AndroidRuntime(2086): java.lang.NullPointerException 05-21 16:23:04.096: E/AndroidRuntime(2086): 在 android.view.ViewGroup.addView(ViewGroup.java:3148) 05-21 16:23:04.096: E/AndroidRuntime(2086): 在 android.view.ViewGroup.addView(ViewGroup.java:3131)

这是被调用的代码:

final LinearLayout eventContainerSub =
                        (LinearLayout) findViewById(R.layout.event_container);

                final LinearLayout eventContainer =
                        (LinearLayout) findViewById(R.id.eventContainer);

                eventContainer.addView(eventContainerSub);

这里是ViewGroup(第一个线性布局):

<LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:animateLayoutChanges="true"
                android:id="@+id/eventContainer"
                android:weightSum="100"
                android:duplicateParentState="true">

这是我添加到(第一个)LinearLayout 上面的(第二个)LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:id="@+id/eventContainerSub">

【问题讨论】:

    标签: view nullpointerexception android-linearlayout viewgroup


    【解决方案1】:

    两个容器的名称完全相同..eventContainerSub。

    没有eventContainer,按你的计划把view group改成container..

    <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:animateLayoutChanges="true"
                    android:id="@+id/event_container"
                    android:weightSum="100"
                    android:duplicateParentState="true">
    

    并确保代码要求正确的 ID:

    最终线性布局 eventContainerSub = (LinearLayout) findViewById(R.layout.eventContainerSub);

                final LinearLayout eventContainer =
                        (LinearLayout) findViewById(R.id.event_container);
    

    如果 SubContainer 膨胀,我还建议您首先从视图中删除它,因为该视图已经有一个父级,您不能将 SubContainer 附加到两个父级。

    要么从此文件中留下子容器并创建一个新容器,要么从父容器中删除,然后才添加到所需的 ViewGroup。

    Android layout replacing a view with another view on run time

    Call removeView() on the child's parent first

    【讨论】:

    • 您现在是否尝试通过 XML 但通过代码添加第二个包含?
    • 对不起,我不明白,你能说得有点不同吗?
    • 空指针错误?你确定它是同样的错误,而不是一个新的?你能把堆栈跟踪吗?
    • 很高兴能提供帮助,有时您查看自己的代码数小时不明白为什么它不起作用..我感到您的痛苦伙伴,很乐意提供帮助 ;)
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2013-12-19
    • 2022-01-19
    • 2013-04-13
    相关资源
    最近更新 更多