2015-01-14 54 views
4

在我的應用程序,我有這樣的價值觀:安卓:ListPreference不能支持INT值

<ListPreference 
    android:key="font_setting" 
    android:title="@string/font" 
    android:summary="%s" 
    android:entries="@array/font_list" 
    android:entryValues="@array/font_list_values" 
    android:dialogTitle="@string/choose_font" /> 

和數據:

<string-array name="font_list"> 
    <item>"Small"</item> 
    <item>"Medium"</item> 
    <item>"Big"</item> 
</string-array> 
<integer-array name="font_list_values"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
</integer-array> 

,但是當我選擇一個值,應用程序崩潰,有是錯誤:

java.lang.NullPointerException 
at android.preference.ListPreference.onDialogClosed(ListPreference.java:264) 

我發現這實際上是一個很老的問題,提出here。令人驚訝的是,谷歌只是說這不是一個錯誤,並沒有修復?任何人都有建議?
這是在Android 4.0版本中測試的。

回答

5

爲什麼不使用字符串數組轉換到後來的整數(Integer.valueOf()),代碼:

<string-array name="font_list_values"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
</string-array> 
+0

謝謝!這是我用過的。 –

2

這個bug似乎變老莫名其妙。我也面臨這個問題。只需使用字符串數組並用Integer.valueOf()解析它們即可。

+0

感謝Kody,是的,其實我確實使用String數組來解決這個問題,但奇怪的是,Google甚至沒有看到這個問題。 –