我正在尝试创建自己的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值?或者,是否可以访问默认值?
答案 0 :(得分:1)
&#34;有没有办法从字符串中获取int值&#34; R.color.someColor&#34;?&#34;
int resourceId = getResources().getIdentifier("someColor", "color", getPackageName());
int color = getResources().getColor(resourceId);