を読まれることはありませんRobotoAttributeSet
が作成され、カスタムビューに渡すように見える読まないか、正しく構築されません。ここでRobolectricのRoboAttributeSetは
は私のテストである:ここでは
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>
CustomButtonの一部:だからどんなに属性を準備するとき、私が設定したもの値
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
です)、私は常に取得の場合は3210です。
何か間違っていますか?どうもありがとう!
を試してみて、私は私のセットアップに類似したしようとしたともstyledArrayが空であることを確認しました。しかし、私はそれがアクティビティとXMLリソースからビューを膨張しようとすると空ではないことがわかります。このテスト方法について検討しますか?それは常にゼロのいずれかの方法だ - –
私は、いや、フィールドの名前を渡しても問題が解決しないチケットhttps://github.com/robolectric/robolectric/issues/1478 –