東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

MultiSelectListPreference页面有其他Preference控件时onGetDefaultValue空指针

2014年8月18日星期一



文件res/xml/preference_news.xml原来是这样的
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
  3.     <SwitchPreference
  4.         android:defaultValue="true"
  5.         android:key="是或者否"
  6.         android:title="4.0新增" />
  7.     <MultiSelectListPreference
  8.         android:dialogTitle="列表多选的对话框标题"
  9.         android:entries="@array/listItem"
  10.         android:entryValues="@array/listItemValue"
  11.         android:key="列表中多选"
  12.         android:summary="列表多选的摘要"
  13.         android:title="列表多选的标题" />
  14. </PreferenceScreen>
运行报错
  1. 08-18 03:22:39.880: E/AndroidRuntime(21951): FATAL EXCEPTION: main
  2. 08-18 03:22:39.880: E/AndroidRuntime(21951): Process: dc.test.hey, PID: 21951
  3. 08-18 03:22:39.880: E/AndroidRuntime(21951): java.lang.RuntimeException: Unable to start activity ComponentInfo{dc.test.hey/dc.test.hey.activity.preference.NewsPreferenceActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class java.lang.reflect.Constructor
  4. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
  5. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
  6. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
  7. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
  8. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.os.Handler.dispatchMessage(Handler.java:102)
  9. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.os.Looper.loop(Looper.java:136)
  10. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.ActivityThread.main(ActivityThread.java:5017)
  11. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at java.lang.reflect.Method.invokeNative(Native Method)
  12. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at java.lang.reflect.Method.invoke(Method.java:515)
  13. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
  14. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
  15. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at dalvik.system.NativeStart.main(Native Method)
  16. 08-18 03:22:39.880: E/AndroidRuntime(21951): Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class java.lang.reflect.Constructor
  17. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.GenericInflater.createItem(GenericInflater.java:397)
  18. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.GenericInflater.onCreateItem(GenericInflater.java:417)
  19. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:428)
  20. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.GenericInflater.rInflate(GenericInflater.java:481)
  21. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.GenericInflater.inflate(GenericInflater.java:326)
  22. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.GenericInflater.inflate(GenericInflater.java:263)
  23. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:272)
  24. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:1472)
  25. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at dc.test.hey.activity.preference.NewsPreferenceActivity.onCreate(NewsPreferenceActivity.java:35)
  26. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.Activity.performCreate(Activity.java:5231)
  27. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
  28. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
  29. 08-18 03:22:39.880: E/AndroidRuntime(21951):     ... 11 more
  30. 08-18 03:22:39.880: E/AndroidRuntime(21951): Caused by: java.lang.reflect.InvocationTargetException
  31. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at java.lang.reflect.Constructor.constructNative(Native Method)
  32. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  33. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.GenericInflater.createItem(GenericInflater.java:383)
  34. 08-18 03:22:39.880: E/AndroidRuntime(21951):     ... 22 more
  35. 08-18 03:22:39.880: E/AndroidRuntime(21951): Caused by: java.lang.NullPointerException
  36. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.content.res.AssetManager.getResourceTextArray(AssetManager.java:215)
  37. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.content.res.Resources.getTextArray(Resources.java:448)
  38. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.content.res.TypedArray.getTextArray(TypedArray.java:629)
  39. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.MultiSelectListPreference.onGetDefaultValue(MultiSelectListPreference.java:211)
  40. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.Preference.<init>(Preference.java:268)
  41. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.DialogPreference.<init>(DialogPreference.java:69)
  42. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.DialogPreference.<init>(DialogPreference.java:90)
  43. 08-18 03:22:39.880: E/AndroidRuntime(21951):     at android.preference.MultiSelectListPreference.<init>(MultiSelectListPreference.java:49)
  44. 08-18 03:22:39.880: E/AndroidRuntime(21951):     ... 25 more
很诡异的错误
这个文件包含了俩控件,SwitchPreference和MultiSelectListPreference;删掉任何一个都可以运行,放一 起就出问题。
然后http://stackoverflow.com/questions/11090304 /multiselectlistpreference-example
增加了一个空的默认值android:defaultValue="@array/empty_arr"
定义空array
<string-array name="empty_arr"/>
就可以运行了。。。。

点开


好神奇的说。。。。

--
senRsl
@Beijing TongZhou
2014年08月18日15:43:06

没有评论 :

发表评论