Loading tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/AppCompatActionBar.java +20 −3 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.layoutlib.bridge.bars; import com.android.ide.common.rendering.api.LayoutLog; import com.android.ide.common.rendering.api.LayoutlibCallback; import com.android.ide.common.rendering.api.RenderResources; import com.android.ide.common.rendering.api.ResourceValue; import com.android.ide.common.rendering.api.SessionParams; import com.android.ide.common.rendering.api.StyleResourceValue; import com.android.layoutlib.bridge.Bridge; import com.android.layoutlib.bridge.android.BridgeContext; import com.android.layoutlib.bridge.impl.ResourceHelper; import com.android.resources.ResourceType; Loading @@ -45,6 +48,8 @@ public class AppCompatActionBar extends BridgeActionBar { private Object mWindowDecorActionBar; private static final String WINDOW_ACTION_BAR_CLASS = "android.support.v7.internal.app.WindowDecorActionBar"; // This is used on v23.1.1 and later. private static final String WINDOW_ACTION_BAR_CLASS_NEW = "android.support.v7.app.WindowDecorActionBar"; private Class<?> mWindowActionBarClass; /** Loading @@ -70,14 +75,26 @@ public class AppCompatActionBar extends BridgeActionBar { try { Class[] constructorParams = {View.class}; Object[] constructorArgs = {getDecorContent()}; mWindowDecorActionBar = params.getLayoutlibCallback().loadView(WINDOW_ACTION_BAR_CLASS, LayoutlibCallback callback = params.getLayoutlibCallback(); // First try to load the class as was available before appcompat v23.1.1, without // logging warnings. try { mWindowDecorActionBar = callback.loadClass(WINDOW_ACTION_BAR_CLASS, constructorParams, constructorArgs); } catch (ClassNotFoundException ignore) { } if (mWindowDecorActionBar == null) { // If failed, load the new class, while logging warnings. mWindowDecorActionBar = callback.loadView(WINDOW_ACTION_BAR_CLASS_NEW, constructorParams, constructorArgs); } mWindowActionBarClass = mWindowDecorActionBar == null ? null : mWindowDecorActionBar.getClass(); setupActionBar(); } catch (Exception e) { e.printStackTrace(); Bridge.getLog().warning(LayoutLog.TAG_BROKEN, "Failed to load AppCompat ActionBar with unknown error.", e); } } Loading Loading
tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/AppCompatActionBar.java +20 −3 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.layoutlib.bridge.bars; import com.android.ide.common.rendering.api.LayoutLog; import com.android.ide.common.rendering.api.LayoutlibCallback; import com.android.ide.common.rendering.api.RenderResources; import com.android.ide.common.rendering.api.ResourceValue; import com.android.ide.common.rendering.api.SessionParams; import com.android.ide.common.rendering.api.StyleResourceValue; import com.android.layoutlib.bridge.Bridge; import com.android.layoutlib.bridge.android.BridgeContext; import com.android.layoutlib.bridge.impl.ResourceHelper; import com.android.resources.ResourceType; Loading @@ -45,6 +48,8 @@ public class AppCompatActionBar extends BridgeActionBar { private Object mWindowDecorActionBar; private static final String WINDOW_ACTION_BAR_CLASS = "android.support.v7.internal.app.WindowDecorActionBar"; // This is used on v23.1.1 and later. private static final String WINDOW_ACTION_BAR_CLASS_NEW = "android.support.v7.app.WindowDecorActionBar"; private Class<?> mWindowActionBarClass; /** Loading @@ -70,14 +75,26 @@ public class AppCompatActionBar extends BridgeActionBar { try { Class[] constructorParams = {View.class}; Object[] constructorArgs = {getDecorContent()}; mWindowDecorActionBar = params.getLayoutlibCallback().loadView(WINDOW_ACTION_BAR_CLASS, LayoutlibCallback callback = params.getLayoutlibCallback(); // First try to load the class as was available before appcompat v23.1.1, without // logging warnings. try { mWindowDecorActionBar = callback.loadClass(WINDOW_ACTION_BAR_CLASS, constructorParams, constructorArgs); } catch (ClassNotFoundException ignore) { } if (mWindowDecorActionBar == null) { // If failed, load the new class, while logging warnings. mWindowDecorActionBar = callback.loadView(WINDOW_ACTION_BAR_CLASS_NEW, constructorParams, constructorArgs); } mWindowActionBarClass = mWindowDecorActionBar == null ? null : mWindowDecorActionBar.getClass(); setupActionBar(); } catch (Exception e) { e.printStackTrace(); Bridge.getLog().warning(LayoutLog.TAG_BROKEN, "Failed to load AppCompat ActionBar with unknown error.", e); } } Loading