android - PreferenceActivity 中的 createViewFromResource 出现 NullPointerException

标签 android nullpointerexception android-arrayadapter preferenceactivity listpreference

我正在研究 PreferenceActivity适用于 Android。我正在关注讨论的一些代码 here ,它使用 ListPreference目的。我的preferences.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="@string/prefs_app" >

      <ListPreference
        android:key="@string/gps_freq_main_key"
        android:title="@string/gps_freq_main_title"
        android:summary="@string/gps_freq_main_summary"
        android:entries="@array/gps_freq_main_entries"
        android:entryValues="@array/gps_freq_main_entryValues"
        android:defaultValue="every second (recommended)" />
    </PreferenceCategory>

    <PreferenceCategory
        android:title="@string/prefs_other">

        <PreferenceScreen
            android:key="@string/app_info_key"
            android:title="@string/app_info_title"
            android:summary="@string/app_info_summary">

          <Preference
            android:key="@string/app_copyright_key"
            android:title="@string/app_copyright_title"
            android:summary="@string/app_copyright_summary" />

          <Preference
            android:key="@string/app_version_key"
            android:title="@string/app_version_title" />

    </PreferenceScreen>
</PreferenceCategory>

所有提到的字符串都在 res/values/strings.xml 中定义。这两个数组在res/values/arrays.xml中定义:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <integer-array name="gps_freq_main_entries">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
    <item>10</item>
    <item>20</item>
    <item>30</item>
    <item>60</item>
    <item>120</item>
    <item>300</item>
    <item>600</item>
    <item>900</item>
    <item>1200</item>
  </integer-array>
  <string-array name="gps_freq_main_entryValues">
    <item>every second (recommended)</item>
    <item>2 seconds</item>
    <item>3 seconds</item>
    <item>4 seconds</item>
    <item>5 seconds</item>
    <item>10 seconds</item>
    <item>20 seconds</item>
    <item>30 seconds</item>
    <item>1 minute</item>
    <item>2 minutes</item>
    <item>5 minutes</item>
    <item>10 minutes</item>
    <item>15 minutes</item>
    <item>30 minutes</item>
  </string-array>

</resources>

当我选择此 ListPreference 时出现问题( Activity 正确启动,所有其他首选项都有效)。我的PreferenceActivity里面没有密码影响此 ListPreference。这是我的 logcat:

08-24 15:34:49.428: ERROR/AndroidRuntime(1250): Uncaught handler: thread main exiting due to uncaught exception
08-24 15:34:49.478: ERROR/AndroidRuntime(1250): java.lang.NullPointerException
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:351)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.AbsListView.obtainView(AbsListView.java:1269)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1117)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.ListView.onMeasure(ListView.java:1030)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.View.measure(View.java:7115)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.View.measure(View.java:7115)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.View.measure(View.java:7115)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.View.measure(View.java:7115)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.View.measure(View.java:7115)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.ViewRoot.performTraversals(ViewRoot.java:698)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.os.Looper.loop(Looper.java:123)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at android.app.ActivityThread.main(ActivityThread.java:3948)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at java.lang.reflect.Method.invokeNative(Native Method)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at java.lang.reflect.Method.invoke(Method.java:521)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
08-24 15:34:49.478: ERROR/AndroidRuntime(1250):     at dalvik.system.NativeStart.main(Native Method)

如有任何帮助,我们将不胜感激!

最佳答案

我刚刚在另一个应用程序中遇到了这个问题。为了解决它,我使用了字符串数组而不是整数数组。我不确定为什么需要这样做,但它确实有效。

关于android - PreferenceActivity 中的 createViewFromResource 出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182090/

相关文章:

android - 错误空指针。 (io.reactivex.Scheduler)' 在空对象引用上

android - java.lang.RuntimeException : Unable to start activity ComponentInfo 错误

android - 有没有办法用 ArrayAdapter 更新多个 TextView?

安卓 OpenCV - "error: cannot find -lopencv_java"

java - Android 构建返回 "java.lang.NoClassDefFoundError: com/android/tools/lint/LintCliClient"

android - 无法使用 Intent.ACTION_GET_CONTENT 从文件选择器的 native 谷歌文档中获取字节

android - 无法在 android studio 2.2 的模拟器中启动 AVD

android - Android 中的 java.lang.NullPointerException

android - 如何使数组适配器中的 Intent.ACTION_CALL android 面向 Activity 未找到异常

android - 扩展 AbsListView 示例