gpt4 book ai didi

android - Robolectric 的 RoboAttributeSet 从未被读取

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:35 25 4
gpt4 key购买 nike

看起来创建并传递给自定义 View 的 RobotoAttributeSet 从未被错误地读取或构建。

这是我的测试:

ArrayList<Attribute> attributes = new ArrayList<>();
attributes.add(
new Attribute("com.package.name:attr/CustomButton_inputType",
String.valueOf(2), "com.package.name")); // no matter what value I use (2)

AttributeSet attrs =
new RoboAttributeSet(attributes, Robolectric.application.getResources(), CustomButton.class);

CustomButton button = new CustomButton(Robolectric.application, attrs);

这是我的attr.xml:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CustomButton">
<attr name="inputType" format="enum">
<enum name="text" value="0"/>
<enum name="textEmailAddress" value="1"/>
<enum name="password" value="2"/>
</attr>
</declare-styleable>
</resources>

自定义按钮的一部分:

private void applyAttributes(Context context, AttributeSet attrs) {
TypedArray typedArray = context.getTheme()
.obtainStyledAttributes(attrs, R.styleable.CustomButton, 0, 0);

try {
int typeValue = // is always 0
typedArray.getInt(R.styleable.CustomButton_inputType, 0);
switch (typeValue) {
case 0:
// do something
break;
case 1:
// do something
break;
case 2:
// do something
break;
default:
// just do nothing
break;
}
} finally {
typedArray.recycle();
}
}

因此,无论我在准备属性时设置什么值(在示例中为 2),对于 typeValue,我总是得到 0

我做错了什么吗?非常感谢!

最佳答案

问题来自您的测试,尤其是传递给 AttributeSet 的值。事实上,您应该传递枚举的名称字段,而不是传递枚举的值字段,这样您就可以在您的 View 中获取关联的值字段。

attributes.add(
new Attribute("com.package.name:attr/CustomButton_inputType",
"textEmailAddress", "com.package.name"));

希望这对您有所帮助 :)另外,不要犹豫,去看看my post dealing with custom attributes .

关于android - Robolectric 的 RoboAttributeSet 从未被读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27801594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com