2015-01-14 40 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甚至没有看到这个问题。 –