Rob*_*ent 18 android android-preferences
是否可以在Xml中定义ListPreference并使用getInt从SharedPreferences中检索值?这是我的Xml:
<ListPreference android:key="@string/prefGestureAccuracyKey"
android:title="@string/prefGestureAccuracyTitle" android:summary="@string/prefGestureAccuracyDesc"
android:entries="@array/prefNumberAccuracyLabels" android:entryValues="@array/prefNumberAccuracyValues"
android:dialogTitle="@string/prefGestureAccuracyDialog"
android:persistent="true" android:defaultValue="2"
android:shouldDisableView="false" />
Run Code Online (Sandbox Code Playgroud)
我希望得到的值类似于:int val = sharedPrefs.getInt(key,defaultValue).
目前我必须使用getString并解析结果.
Edw*_*alk 40
我的理解是ListPreference只能用于字符串数组.你必须使用getString()并自己转换为整数.有关此问题的错误报告,请参阅http://code.google.com/p/android/issues/detail?id=2096.谷歌计划扩展ListPreference以处理除字符串之外的任何事情.
另外:您还需要将首选项存储为字符串.否则,您的首选项活动在启动时会崩溃并尝试读取字符串值.
我以一种更极端的方式做到了这一点.
我使用ListPreference并使我的entryValues数组包含我可以使用Integer.parseInt()转换为整数的字符串.
然后在我的PreferencesActivity中,我为这个首选项设置了一个OnPreferenceChangeListener,在onPreferenceChange()方法中,我为整数版本设置了一个不同的首选项 - 第二个是我在代码中实际使用的那个.第一个是用户选项.
这样我每次需要查看它时都不必将String转换为int,我只是在用户设置它时才这样做.也许矫枉过正,但确实有效:)