0

我正在尝试使用.addView将另一个添加LinearLayoutViewGroup.

我在 LogCat 上收到以下错误:

05-21 16:23:04.096:E/AndroidRuntime(2086):致命异常:主要 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">
4

1 回答 1

0

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

没有eventContainer,按照您的计划将视图组更改为容器..

<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:

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

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

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

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

Android布局在运行时用另一个视图替换视图

首先在孩子的父母上调用 removeView()

于 2013-05-21T16:38:00.913 回答