Разрешение типизированных значений массива - PullRequest
0 голосов
/ 23 октября 2018

У меня определены следующие массивы:

<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() 
...