我定义了以下数组:
<resources>
<array name="feature_styles">
<item>@array/style_main</item>
<item>@array/style_gray</item>
</array>
<array name="style_main">
<item>?attr/colorMain</item>
<item>?attr/colorMainLighter</item>
</array>
<array name="style_gray">
<item>?attr/colorGrayNormal</item>
<item>?attr/colorGrayWeak</item>
</array>
</resources>
对于feature_styles
中的每个项目,我都需要解析引用的内部数组,并从中检索实际的颜色值。这些颜色可以内联指定,也可以作为对R.color的引用,也可以作为属性引用。我当前的代码因以下错误而崩溃:
java.lang.UnsupportedOperationException: Failed to resolve attribute at index 1: TypedValue{t=0x2/d=0x7f0400ab a=5}
这是我当前的代码:
val arr = res.obtainTypedArray(R.array.feature_styles);
for (i in 0 until arr.length()) {
val id = arr.getResourceId(i, 0);
if (id != 0) {
val itemArr = res.obtainTypedArray(id);
val mainColor = itemArr.getValue(0, 0)
itemArr.recycle()
}
}
arr.recycle()