使用ListView时出现NullPointerException

时间:2013-12-11 14:15:37

标签: android listview nullpointerexception

我正在努力找到当我尝试启动特定活动时抛出某个NullPointerException的原因。

LogCat输出:

12-11 13:29:28.211: E/AndroidRuntime(701): Caused by: java.lang.NullPointerException
12-11 13:29:28.211: E/AndroidRuntime(701):  at android.content.res.AssetManager.getResourceTextArray(AssetManager.java:214)
12-11 13:29:28.211: E/AndroidRuntime(701):  at android.content.res.Resources.getTextArray(Resources.java:361)
12-11 13:29:28.211: E/AndroidRuntime(701):  at android.content.res.TypedArray.getTextArray(TypedArray.java:628)
12-11 13:29:28.211: E/AndroidRuntime(701):  at android.widget.ListView.<init>(ListView.java:168)
12-11 13:29:28.211: E/AndroidRuntime(701):  at android.widget.ListView.<init>(ListView.java:159)
12-11 13:29:28.211: E/AndroidRuntime(701):  ... 25 more

相关活动的onCreate()方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display);
}

我的活动正在尝试加载的布局“显示”的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false" >

    <ListView
        android:id="@+id/weekdayListView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

    </ListView>

    <ListView
        android:id="@+id/timeSlotListView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:entries="@layout/item_layout" >

    </ListView>

</LinearLayout>

除了onCreate()中的内容之外,我的活动没有做任何其他事情。由于没有代码来填充列表视图(但是我在尝试找到问题的根源时对其进行了评论),当活动开始时它应该只是一个空白屏幕。

当我在XML文件中注释掉与weekdayListView相关的部分时,活动加载得很好,所以我必须假设我如何设置XML存在问题。我可以在两者之间看到的唯一区别是我没有明确设置android:entries属性,但如果我理解正确,在这种情况下它应该只使用默认值。

我已经坚持了一段时间,所以任何帮助都非常感谢。我试图提供我认为相关的尽可能多的信息,但如果还有其他任何我忘记包含的信息,请告诉我。

1 个答案:

答案 0 :(得分:3)

你的android:entries属性指向一个布局,而不是指向一个字符串数组资源。

在strings.xml中创建一个字符串数组,例如

<string-array name="vals">
  <item>Foo</item>
  <item>Bar</item>
</string-array>

然后使用

android:entries="@string/vals"