我正在尝试使用.addView
向LinearLayout
添加另一个ViewGroup
。
我在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">
答案 0 :(得分: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);
我还建议你先从视图中删除SubContainer,如果它已经膨胀了,因为该视图已经有一个父级,你不能将SubContainer附加到两个父级。
从此文件中保留子容器并创建一个新容器,或从父文件中删除,然后添加到所需的ViewGroup。
Android layout replacing a view with another view on run time