是否可以在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并解析结果。
发布于 2010-06-13 11:14:59
我的理解是ListPreference只能与字符串数组一起使用。您必须使用getString()并自己将其转换为整数。有关这方面的错误报告,请参阅http://code.google.com/p/android/issues/detail?id=2096。看起来谷歌并不打算扩展ListPreference来处理字符串以外的任何事情。
另外:您还需要将首选项存储为字符串。否则,当您的preferences活动启动并尝试读取字符串值时,它将崩溃。
发布于 2011-09-29 02:21:26
我用了一种更极端的方式。
我使用了ListPreference,并使我的entryValues数组包含可以通过Integer.parseInt()转换为整数的字符串。
然后,在我的PreferencesActivity中,我为这个首选项设置了一个OnPreferenceChangeListener,并在onPreferenceChange()方法中为整数版本设置了一个不同的首选项-第二个首选项是我在代码中实际使用的首选项。第一个是只针对用户选项的。
这样,我就不必在每次需要查看字符串时都将其转换为int,只需在用户设置它时进行转换。也许有些夸大其词,但它确实有效:)
发布于 2016-08-11 08:44:58
但是对于我来说,您首先通过以下方式获取一个字符串类型: string numStr = prefs.getString("key","-555");然后:`
try {
int yourInt = Integer.parseInt(numStr);
if(yourInt != -555)
{
//do your stuff
}
}
catch(Exception e)
{
...
}
`
https://stackoverflow.com/questions/2705347
复制相似问题