从自定义首选项访问默认值

时间:2014-05-01 12:55:25

标签: android android-preferences

我正在尝试创建自己的Preference,我想让用户选择新值或重置为默认值。

因此,我需要在一个首选项中“存储”两个值。 我的意思是,我想同时访问存储的值和默认值(在XML中定义)。

<my.custom.preference
    myCustomAttribute="R.color.someColor"
    android:defaultValue="@color/someColor"
    android:key="myPref"
/>

在我的代码中,我读取了这样的值:

String value = attrs.getAttributeValue(null, "myCustomAttribute");

返回值为"R.color.someColor"

所以,我试图获得这个字符串的R-reference,但这就是我失败的地方。

int neededValue = ???

目前,我使用了一个非常糟糕的解决方法。 我按键搜索选定的Preference,然后以编程方式设置neededValue

switch(getKey()) {
case "firstCustomPreference":
     neededColor = R.color.firstColor;
     break;
case "secondCustomPreference":
     neededColor = R.color.secondColor;
     break;
}

这确实有效,但我真的希望有更清洁的方法。

所以我的问题是:有没有办法从字符串"R.color.someColor"中获取int值?或者,是否可以访问默认值?

1 个答案:

答案 0 :(得分:1)

&#34;有没有办法从字符串中获取int值&#34; R.color.someColor&#34;?&#34;

int resourceId = getResources().getIdentifier("someColor", "color", getPackageName());
int color = getResources().getColor(resourceId);