Android 膨胀类java.lang.reflect.Constructor时出现MultiSelectListPreference错误
我目前正试图在我的设置中实现Android 膨胀类java.lang.reflect.Constructor时出现MultiSelectListPreference错误,android,xml,android-preferences,multiselectlistpreference,Android,Xml,Android Preferences,Multiselectlistpreference,我目前正试图在我的设置中实现MultiSelectListPreference,但遇到以下错误: E/ActivityThread: Failed to inflate android.view.InflateException: Binary XML file line #18: Error inflating class java.lang.reflect.Constructor at android.preference.GenericInflater.cr
MultiSelectListPreference
,但遇到以下错误:
E/ActivityThread: Failed to inflate
android.view.InflateException: Binary XML file line #18: Error inflating class java.lang.reflect.Constructor
at android.preference.GenericInflater.createItem(GenericInflater.java:397)
at android.preference.GenericInflater.onCreateItem(GenericInflater.java:417)
at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:428)
at android.preference.GenericInflater.rInflate(GenericInflater.java:481)
at android.preference.GenericInflater.inflate(GenericInflater.java:326)
at android.preference.GenericInflater.inflate(GenericInflater.java:263)
at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:269)
at android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:285)
at com.mikebdev.refuel.SettingsActivity$SettingsFragment.onCreate(SettingsActivity.java:34)
at android.app.Fragment.performCreate(Fragment.java:1673)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:854)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
at android.app.BackStackRecord.run(BackStackRecord.java:682)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435)
at android.app.Activity.performStart(Activity.java:5113)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
at android.app.ActivityThread.access$600(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5227)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.preference.GenericInflater.createItem(GenericInflater.java:383)
... 26 more
Caused by: java.lang.NullPointerException
at android.content.res.AssetManager.getResourceTextArray(AssetManager.java:230)
at android.content.res.Resources.getTextArray(Resources.java:427)
at android.content.res.TypedArray.getTextArray(TypedArray.java:628)
at android.preference.MultiSelectListPreference.onGetDefaultValue(MultiSelectListPreference.java:211)
at android.preference.Preference.<init>(Preference.java:267)
at android.preference.DialogPreference.<init>(DialogPreference.java:69)
at android.preference.DialogPreference.<init>(DialogPreference.java:90)
at android.preference.MultiSelectListPreference.<init>(MultiSelectListPreference.java:49)
... 29 more
E/ActivityThread:充气失败
android.view.InflateException:二进制XML文件行#18:膨胀类java.lang.reflect.Constructor时出错
位于android.preference.GenericInflater.createItem(GenericInflater.java:397)
位于android.preference.GenericInflater.onCreateItem(GenericInflater.java:417)
位于android.preference.GenericInflater.createItemFromTag(GenericInflater.java:428)
位于android.preference.genericinflate.rInflate(genericinflate.java:481)
在android.preference.GenericInflater.inflate(GenericInflater.java:326)
在android.preference.GenericInflater.inflate(GenericInflater.java:263)
在android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:269)
位于android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:285)
在com.mikebdev.refuel.SettingsActivity$SettingsFragment.onCreate上(SettingsActivity.java:34)
位于android.app.Fragment.performCreate(Fragment.java:1673)
位于android.app.FragmentManagerImpl.moveToState(FragmentManager.java:854)
在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
运行(BackStackRecord.java:682)
位于android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435)
位于android.app.Activity.performStart(Activity.java:5113)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
在android.app.ActivityThread.access上$600(ActivityThread.java:153)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:5227)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Constructor.constructNative(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:417)
位于android.preference.GenericInflater.createItem(GenericInflater.java:383)
... 26多
原因:java.lang.NullPointerException
位于android.content.res.AssetManager.getResourceTextArray(AssetManager.java:230)
位于android.content.res.Resources.getTextArray(Resources.java:427)
位于android.content.res.TypedArray.getTextArray(TypedArray.java:628)
位于android.preference.MultiSelectListPreference.onGetDefaultValue(MultiSelectListPreference.java:211)
在android.preference.preference.(preference.java:267)
在android.preference.DialogPreference.(DialogPreference.java:69)
在android.preference.DialogPreference.(DialogPreference.java:90)
在android.preference.MultiSelectListPreference.(MultiSelectListPreference.java:49)
... 还有29个
我的XML如下所示:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:defaultValue="@string/pref_amountUnit_default"
android:dialogTitle="@string/pref_amountUnit"
android:entries="@array/pref_amountUnit_entries"
android:entryValues="@array/pref_amountUnit_values"
android:key="pref_amountUnit"
android:summary="@string/pref_amountUnit_summary"
android:title="@string/pref_amountUnit"/>
<ListPreference
android:defaultValue="@string/pref_distanceUnit_default"
android:dialogTitle="@string/pref_distanceUnit"
android:entries="@array/pref_distanceUnit_entries"
android:entryValues="@array/pref_distanceUnit_values"
android:key="pref_distanceUnit"
android:summary="@string/pref_distanceUnit_summary"
android:title="@string/pref_distanceUnit"/>
<MultiSelectListPreference
android:key="pref_consumptionUnit"
android:title="@string/pref_consumptionUnit"
android:summary="@string/pref_consumptionUnit_summary"
android:dialogTitle="@string/pref_consumptionUnit"
android:entries="@array/pref_consumptionUnit_entries"
android:entryValues="@array/pref_consumptionUnit_values"
android:defaultValue="@string/pref_consumptionUnit_default"
/>
<EditTextPreference
android:defaultValue="@string/pref_moneyUnit_default"
android:dialogTitle="@string/pref_moneyUnit"
android:key="pref_moneyUnit"
android:summary="@string/pref_moneyUnit_summary"
android:title="@string/pref_moneyUnit"/>
</PreferenceScreen>
我不知道是什么导致了这个错误。我希望您能为我指出正确的方向您的
MultiSelectListPreference
的以下属性似乎导致了NullPointerException
(在尝试解析字符串
?)
您的
MultiSelectListPreference
的以下属性似乎导致了NullPointerException
(在尝试解析字符串时)
?)
好的,我刚拿到
从使用列表首选项开始,我仍然在SharedReferences
中写入默认值。这显然不适用于MultiSelectListPreference
想要创建的集合
在尝试获取首选项时,我刚刚将getString
更改为getStringSet
,并为默认值创建了一个StringSet:
Set<String> consumptionUnits = new HashSet<String>();
consumptionUnits.add("l/km");
consumption_unit = sharedPref.getStringSet("pref_consumptionUnit", consumptionUnits);
Set consumptionUnits=new HashSet();
消耗单位。添加(“l/km”);
消费单位=sharedPref.getStringSet(“pref_消费单位”,消费单位);
好的,我刚拿到
从使用列表首选项开始,我仍然在SharedReferences
中写入默认值。这显然不适用于MultiSelectListPreference
想要创建的集合
在尝试获取首选项时,我刚刚将getString
更改为getStringSet
,并为默认值创建了一个StringSet:
Set<String> consumptionUnits = new HashSet<String>();
consumptionUnits.add("l/km");
consumption_unit = sharedPref.getStringSet("pref_consumptionUnit", consumptionUnits);
Set consumptionUnits=new HashSet();
消耗单位。添加(“l/km”);
消费单位=sharedPref.getStringSet(“pref_消费单位”,消费单位);
也有NPE对MultiselectList的偏好。
在API 22中均为良好,在API 15中为NPE
在trail和error之后,触发器是XML中的摘要。
以编程方式设置摘要后,没有NPE
似乎是应用程序compat库中的一个bug?还具有多选项列表首选项上的NPE。
在API 22中均为良好,在API 15中为NPE
在trail和error之后,触发器是XML中的摘要。
以编程方式设置摘要后,没有NPE
似乎是应用程序compat库中的一个bug?我不知道为什么。字符串值是EntryValues中my array项的第一个值。您可能还应该附加相关资源@mike.b93我尝试使用字符串而不是字符串引用,但我