0

我正在尝试listView从数组中填充 a 。但是,当我尝试在我的 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()构造函数。在 Android 中,您应该使用onCreate()方法来初始化 Activity 而不是构造函数。

于 2013-07-15T10:14:48.727 回答
0

如果您在对话框、弹出窗口等中使用列表视图,其中您有参数 Context 上下文类型,则必须像这样使用 findViewById。

ListView lstAppts = (ListView) context.findViewById(R.id.lstAppts);

或者,如果您有:查看布局

ListView lstAppts = (ListView) layout.findViewById(R.id.lstAppts);

干杯,

于 2013-07-15T09:24:10.630 回答
0

很可能您没有在 onCreate 方法上填充正确的布局。检查 setContentView 方法并确保它与“listView”的布局名称匹配。

于 2013-07-15T09:11:12.490 回答