From 43214e0c19c13acbf1ecd714167abf03283d54ef Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Thu, 25 Sep 2014 15:42:15 -0700 Subject: [PATCH] Fix error when using list as actionBarNavMode. [DO NOT MERGE] A bug in the framework leads to the wrong argument being passed to defStyleRes when obtaining styled attributes. The framework however just ignores the attribute in such a case. LayoutLib logs an error to help developers find bugs in their code. The bug was seen when using list as the actionBarNavMode. This change ignores the attribute if it detects that it's the framework bug. Also, we change the error to a warning. Change-Id: I58e1fe4469de0329a27b577d75c0a59c48d0381b --- .../android/layoutlib/bridge/android/BridgeContext.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index 93a98a00d8356..4ac65433d0a81 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -630,10 +630,15 @@ public final class BridgeContext extends Context { defStyleRes, value.getSecond()), null /*data*/); } + } else if (value.getFirst() == ResourceType.ATTR) { + // Ignore. There's a bug in the framework where sometimes defStyleAttr ends up + // in defStyleRes. The framework ignores the attribute when it's not a style. + // But to let the developers find bugs in their code, we log an error for other + // cases. } else { - Bridge.getLog().error(null, + Bridge.getLog().warning(null, String.format( - "Resouce id 0x%x is not of type STYLE (instead %s)", + "Resource id 0x%x is not of type STYLE (instead %s)", defStyleRes, value.getFirst().toString()), null /*data*/); }