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の(最初のもの)に追加している(2番目)です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);

SubContainer が膨張した場合は、ビューから SubContainer を最初に削除することをお勧めします。そのビューには既に親があり、SubContainer を 2 つの親にアタッチすることはできません。

このファイルからサブコンテナを残して新しいものを作成するか、親から削除してから必要な ViewGroup に追加してください。

実行時にビューを別のビューに置き換える Android レイアウト

最初に子の親で removeView() を呼び出します

于 2013-05-21T16:38:00.913 に答える