我正在研究 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/