我正在尝试从数组中填充listView
。但是,当我尝试在我的java代码中找到listview时,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);
据我所知,我正确引用了listview。它在我的XML中命名为'lstAppts',在findViewById
函数中,我使用R.id.lstAppts
找到它。但是,当我使用断点调试代码时,我可以清楚地看到lstAppts对象是null
。这是为什么?
答案 0 :(得分:1)
好像你试图在构造函数上调用findViewById()
。在Android中,您应该使用onCreate()
方法来初始化Activity而不是构造函数。
答案 1 :(得分:0)
很可能你没有在onCreate方法上夸大正确的布局。检查setContentView方法并确保它与“listView”的布局名称匹配。
答案 2 :(得分:0)
如果您在对话框,弹出窗口等中使用listview,那么您必须使用这样的findViewById。
ListView lstAppts = (ListView) context.findViewById(R.id.lstAppts);
或者如果您有:查看布局
ListView lstAppts = (ListView) layout.findViewById(R.id.lstAppts);
干杯,