如何在XML中定义一个值为整数的Android ListPreference?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (127)

是否可以用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" />

我想要得到的值类似于:int val = sharedPrefs.getInt(key, defaultValue).

目前,我必须使用getString并解析结果。

提问于
用户回答回答于

我使用了ListPreference,并使entryValue数组包含可以用Integer.parseInt()转换为整数的String。

然后,在PreferencesActivity中,我为这个首选项设置了一个OnPreferenceChangeListener,在onPreferenceChange()方法中,我设置了一个与整数版本不同的首选项--第二个是我在代码中实际使用的。第一种是只为用户选项而设。

这样,每次需要查看字符串时,我都不需要将字符串转换为int,只需在用户设置字符串时就这样做。

用户回答回答于

我的理解是ListPreference只能使用字符串数组。您必须使用getString()并自己转换为整数。

另外:您还需要将首选项存储为字符串。否则,您的首选项活动在启动并尝试读取字符串值时会崩溃。

扫码关注云+社区

领取腾讯云代金券