0

ユーザーがボタンを押すと、次のような「詳細」レイアウトに切り替えたいと思います。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutDetails"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textSize="16dp"
            android:textColor="#ff0000"
            android:text="Category" />      

        <TextView android:id="@+id/tv_category" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16dp"
            android:layout_marginLeft="10dp" />

</LinearLayout>

これが私がそれを切り替えようとしている方法です:

 switch(item.getItemId())
                {
                case ID_DETAILS:
                    // show new layout to for details                   
                    LinearLayout detailsLayout = (LinearLayout) findViewById(R.id.layoutDetails);
                    LayoutInflater detailsvi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    View detailsv = detailsvi.inflate(R.layout.activity_details, null);

// IT CRASHES ON THIS LINE
                    detailsLayout.addView(detailsv,new LinearLayout.LayoutParams(detailsLayout.getLayoutParams().width, detailsLayout.getLayoutParams().height));

                            return true;
}

nullポインタ例外エラーが発生します!!!

08-09 17:23:47.146: E/AndroidRuntime(1572): FATAL EXCEPTION: main
08-09 17:23:47.146: E/AndroidRuntime(1572): java.lang.NullPointerException
4

1 に答える 1

1

これを解決する方法は次のとおりです。

1)クラッシュラインにブレークポイントを設定し、デバッグモードで実行します。detailsLayoutがnullかどうかをすぐに確認できます。そうでない場合は、ステップ2を実行します。detailsvがnullかどうかも確認します。

2)詳細オブジェクトo1 = etailsLayout.getLayoutParams(); //これがnullかどうかを確認します。

それはどちらかでなければなりません。

更新:detailsLayoutが実際にはnullであるため。それはどちらかでなければなりません

1)detailsLayoutを要求する前にsetContentViewが呼び出されなかった、または2)detailsLayoutを定義していないレイアウトにsetContentViewが設定された、または3)setContentViewが正しく呼び出されたが、detailsLayoutがそのレイアウトファイルで正しく識別されていない。

これらの3つのうちの1つでなければなりません。

于 2012-08-09T21:42:04.597 に答える