如何从 attr 获取具有引用格式类型的字符串?

发布于 2024-12-08 15:46:50 字数 902 浏览 2 评论 0原文

我有自定义 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)

谢谢 !

I have my custom attr.xml document in which I specified declare-styleable:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="EditTextValidateablePreference">
        <attr name="errorMessage" format="reference" />
    </declare-styleable>

</resources>

Then in layout I set:

<com.xx.yy.EditTextValidateablePreference
    ...
    ns:errorMessage="@string/validation_email_mail_server_invalid"
    />

And in EditTextValidateablePreference.class I get it with:

    String validatorErrorMessage = attrs.getAttributeValue(PREFERENCE_NS, "errorMessage");

validatorErrorMessage has a value like: @2131099700

How can I get its integer value to use it with:

context.getResources().getString(messageId)

?

Thanks !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别在捏我脸啦 2024-12-15 15:46:50

我建议您参考一个很好的一般答案:声明自定义使用 XML 的 android UI 元素

特别是,您应该使用 Context.obtainStyledAttributes(AttributeSet 设置、 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();

There's an excellent general answer which I recommend you to refer to: Declaring a custom android UI element using XML

In particular, you should use Context.obtainStyledAttributes(AttributeSet set, int[] attrs) and TypedArray.getString(int index) instead of AttributeSet.getAttributeValue(...):

TypedArray ta = activityContext.obtainStyledAttributes(attrs, R.styleable.EditTextValidateablePreference);
String theString = ta.getString(R.styleable.EditTextValidateablePreference_errorMessage);
ta.recycle();
再可℃爱ぅ一点好了 2024-12-15 15:46:50
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.EditTextValidateablePreference);
int resID = array.getResourceId(R.styleable.EditTextValidateablePreference_errorMessage, R.string.default_text);

从这个 int 中,您可以通过以下方式获取字符串...

getResources().getString(resID);
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.EditTextValidateablePreference);
int resID = array.getResourceId(R.styleable.EditTextValidateablePreference_errorMessage, R.string.default_text);

And from this int, you can get the string by saying...

getResources().getString(resID);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文