我有自定义attr.xml
文件,我在其中指定了declare-styleable
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="EditTextValidateablePreference">
<attr name="errorMessage" format="reference" />
</declare-styleable>
</resources>
然后在布局中我设置:
<com.xx.yy.EditTextValidateablePreference
...
ns:errorMessage="@string/validation_email_mail_server_invalid"
/>
在EditTextValidateablePreference.class
我得到了:
String validatorErrorMessage = attrs.getAttributeValue(PREFERENCE_NS, "errorMessage");
validatorErrorMessage
的值类似于:@2131099700
如何将其整数值用于:
context.getResources().getString(messageId)
谢谢!
答案 0 :(得分:21)
我建议您参考:Declaring a custom android UI element using XML
,这是一个很好的一般性答案特别是,您应该使用Context.obtainStyledAttributes(AttributeSet set, int[] attrs)和TypedArray.getString(int index)而不是AttributeSet.getAttributeValue(...):
TypedArray ta = activityContext.obtainStyledAttributes(attrs, R.styleable.EditTextValidateablePreference);
String theString = ta.getString(R.styleable.EditTextValidateablePreference_errorMessage);
ta.recycle();
答案 1 :(得分:11)
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.EditTextValidateablePreference); int resID = array.getResourceId(R.styleable.EditTextValidateablePreference_errorMessage, R.string.default_text);
从这个int中,您可以通过说...
来获取字符串getResources().getString(resID);