ListPreference 抛出 NullPointerException
ListPreference throws NullPointerException
我有一个 ListPreference:
<ListPreference
android:entries="@array/frequencies"
android:entryValues="@array/frequencies_values"
android:key="pref_key_frequencies"
android:summary="@string/frequency_pref_summary"
android:title="@string/frequency_pref_title" />
@array/frequencies:
<string-array name="frequencies">
<item>5 minutes</item>
<item>10 minutes</item>
<item>15 minutes</item>
<item>20 minutes</item>
<item>30 minutes</item>
<item>60 minutes</item>
</string-array>
@array/frequencies_values
<integer-array name="frequencies_values">
<item>300</item>
<item>600</item>
<item>900</item>
<item>1200</item>
<item>1800</item>
<item>3600</item>
</integer-array>
对话框中的元素显示正确。但是,如果我尝试 frequencyListPreference.setValueIndex(0);
,我会得到 NullPointerException。
即使我在我的代码中什么都不做,如果我点击列表中的一个元素,我会得到:
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference
如果我检查数组的其中一个元素的值 frequencyListPreference.getEntryValues()
始终为 null。
我做错了什么?
据我所知,Android 将只接受字符串数组而不是整数。
改变
<integer-array name="frequencies_values">
<item>300</item>
<item>600</item>
<item>900</item>
<item>1200</item>
<item>1800</item>
<item>3600</item>
</integer-array>
至
<string-array name="frequencies_values">
<item>300</item>
<item>600</item>
<item>900</item>
<item>1200</item>
<item>1800</item>
<item>3600</item>
</string-array>
在您从首选项读取的代码中,使用 Integer.parseInt() 将值转换为可用整数。
详情请见下文:ListPreference: use string-array as Entry and integer-array as Entry Values doesn't work
我有一个 ListPreference:
<ListPreference
android:entries="@array/frequencies"
android:entryValues="@array/frequencies_values"
android:key="pref_key_frequencies"
android:summary="@string/frequency_pref_summary"
android:title="@string/frequency_pref_title" />
@array/frequencies:
<string-array name="frequencies">
<item>5 minutes</item>
<item>10 minutes</item>
<item>15 minutes</item>
<item>20 minutes</item>
<item>30 minutes</item>
<item>60 minutes</item>
</string-array>
@array/frequencies_values
<integer-array name="frequencies_values">
<item>300</item>
<item>600</item>
<item>900</item>
<item>1200</item>
<item>1800</item>
<item>3600</item>
</integer-array>
对话框中的元素显示正确。但是,如果我尝试 frequencyListPreference.setValueIndex(0);
,我会得到 NullPointerException。
即使我在我的代码中什么都不做,如果我点击列表中的一个元素,我会得到:
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference
如果我检查数组的其中一个元素的值 frequencyListPreference.getEntryValues()
始终为 null。
我做错了什么?
据我所知,Android 将只接受字符串数组而不是整数。
改变
<integer-array name="frequencies_values">
<item>300</item>
<item>600</item>
<item>900</item>
<item>1200</item>
<item>1800</item>
<item>3600</item>
</integer-array>
至
<string-array name="frequencies_values">
<item>300</item>
<item>600</item>
<item>900</item>
<item>1200</item>
<item>1800</item>
<item>3600</item>
</string-array>
在您从首选项读取的代码中,使用 Integer.parseInt() 将值转换为可用整数。
详情请见下文:ListPreference: use string-array as Entry and integer-array as Entry Values doesn't work