1

正在Android. 我正在关注这里讨论的一些代码,它使用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(活动正确启动,并且所有其他首选项都有效)。我的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)

任何帮助将不胜感激!

4

1 回答 1

2

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

于 2011-12-05T02:17:09.313 回答