From ce6b83ad8175c83e3d42bf563d6e5f5610bce664 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Tue, 9 Apr 2024 07:05:23 +0200 Subject: [PATCH] AssetManager: load style with parser.getAttribute(null, "style") This way, we get the type as well and can check for it being an attribute properly. --- .../android/content/res/AssetManager.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java index 70a18512..bfefcd79 100644 --- a/src/api-impl/android/content/res/AssetManager.java +++ b/src/api-impl/android/content/res/AssetManager.java @@ -765,20 +765,20 @@ public final class AssetManager { int defStyleAttr, int defStyleRes, AttributeSet set, int[] inAttrs, int[] outValues, int[] outIndices) { TypedValue value = new TypedValue(); + ResXmlPullParser parser = (ResXmlPullParser)set; if (defStyleRes == 0 && theme != 0 && loadThemeAttributeValue(theme, defStyleAttr, value, true) >= 0) defStyleRes = value.data; if (defStyleRes == 0 && set != null) { - int styleVal = set.getAttributeResourceValue(null, "style", 0); - if(((styleVal >> 16) & 0xff) == 0x3) { // attribute - if (theme != 0 && loadThemeAttributeValue(theme, styleVal, value, true) >= 0) - defStyleRes = value.data; - } - else { - defStyleRes = styleVal; + ValueItem valueItem = parser.getAttribute(null, "style"); + if (valueItem != null) { + value.type = valueItem.getType(); + value.data = valueItem.getData(); + if (theme != 0 && (value.type == TypedValue.TYPE_ATTRIBUTE)) + loadThemeAttributeValue(theme, value.data, value, true); + defStyleRes = value.data; } } - ResXmlPullParser parser = (ResXmlPullParser)set; outIndices[0] = 0; Map xmlCache = new HashMap<>();