首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Xml中定义一个值为整数的Android ListPreference?

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

Stack Overflow用户
提问于 2010-04-25 01:02:34
回答 3查看 22.4K关注 0票数 18

是否可以在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并解析结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-13 11:14:59

我的理解是ListPreference只能与字符串数组一起使用。您必须使用getString()并自己将其转换为整数。有关这方面的错误报告,请参阅http://code.google.com/p/android/issues/detail?id=2096。看起来谷歌并不打算扩展ListPreference来处理字符串以外的任何事情。

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

票数 40
EN

Stack Overflow用户

发布于 2011-09-29 02:21:26

我用了一种更极端的方式。

我使用了ListPreference,并使我的entryValues数组包含可以通过Integer.parseInt()转换为整数的字符串。

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

这样,我就不必在每次需要查看字符串时都将其转换为int,只需在用户设置它时进行转换。也许有些夸大其词,但它确实有效:)

票数 6
EN

Stack Overflow用户

发布于 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)
{
    ...
}

`

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2705347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档