0

listView配列からデータを入力しようとしています。ただし、Java コードでリストビューを見つけようとすると、findViewById 関数は null を返します。

ここに私のXMLがあります:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/androidbg_dark"
    tools:context=".DiaryActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/lstAppts"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="5"
            android:textColor="#FFFFFF" ></ListView>

        <LinearLayout
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:layout_weight="1" 
            android:layout_height="64dp">

            <Button
                android:id="@+id/btnOther"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="2dip"
                android:layout_weight="1"
                android:background="@drawable/menu_button"
                android:onClick="newAppointment"
                android:textColor="#FFFFFF" />

            <Button
                android:id="@+id/btnOther2"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="2dip"
                android:layout_weight="1"
                android:background="@drawable/menu_button"
                android:onClick="newAppointment"
                android:textColor="#FFFFFF" />

            <Button
                android:id="@+id/btnNewAppt"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="2dip"
                android:layout_weight="1"
                android:background="@drawable/menu_button"
                android:onClick="newAppointment"
                android:text="@string/newappt"
                android:textColor="#FFFFFF" />
        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

そして、問題のコードは次のとおりです。

ListView lstAppts = (ListView) findViewById(R.id.lstAppts);
String[] data = { "Appointment 1", "Appointment 2", "Appointment 3" };

ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
lstAppts.setAdapter(adapter);

私の知る限り、リストビューを正しく参照しています。私のXMLでは「lstAppts」という名前で、findViewById関数ではR.id.lstAppts. ただし、ブレークポイントを使用してコードをデバッグすると、lstAppts オブジェクトがnull. どうしてこれなの?

4

3 に答える 3

1

findViewById()コンストラクタを呼び出そうとしているようです。AndroidonCreate()では、メソッドを使用して、コンストラクターの代わりにアクティビティを開始する必要があります。

于 2013-07-15T10:14:48.727 に答える
0

ほとんどの場合、onCreate メソッドで正しいレイアウトをインフレートしていません。setContentView メソッドをチェックして、「listView」のレイアウト名と一致していることを確認してください。

于 2013-07-15T09:11:12.490 に答える