渲染期间引发exception:无法find操作栏的布局

刚刚使用Android Studio时我在编辑器中编辑了一个XML文件,我在预览和设计窗口中遇到了这个错误:

Exception raised during rendering: Unable to find the layout for Action Bar. 

我已经尝试重新启动Android Studio,我的笔记本电脑和谷歌搜索,但我找不到任何东西。 有没有人经历过类似的事情?

我有这种错误。 在我的Mac上,有API 22.如果我选择它,将出现此错误。 因此,点击API 21或更低版本可以解决您的问题

在此处输入图像描述

您可能需要更新您的工具

那些使用Eclipse的人可能会尝试选择Theme.DeviceDefault来消除exception。 更新:根据评论,这也适用于Android Studio。 在此处输入图像描述

您可以通过两种方式解决此问题

从选项卡更改API,从可用或选择PICK UP BEST中尝试其中一个或更改您的最小sdk

从可用的API中选择API

如果第一个解决方案无效,请更改主题

在此处输入图像描述

单击编辑器中的主题并更改主题:

单击编辑器中的主题并更改主题

我的问题在此之后解决了

我在eclipse-3.8,adt-23.07,sdk-tools-23.1,appcompat_v7_r19.1上遇到了这个错误。

在分析错误之后,我发现问题出现在android-sdk-linux / platforms / android-23 / data / layoutlib.jar:com / android / layoutlib / bridge / impl / Layout.class上,方法createActionBar在行if (this.mBuilder.isThemeAppCompat())

我的解决方案

  1. (没有源,所以)反编译Layout.class – > Layout.java
  2. 编辑Layout.java,添加方法:
 private boolean hasWindowDecorActionBar(SessionParams params) { LayoutlibCallback callback = params.getLayoutlibCallback(); try { callback.findClass("android.support.v7.app.WindowDecorActionBar"); } catch (ClassNotFoundException ei) { try { callback.findClass("android.support.v7.internal.app.WindowDecorActionBar"); } catch (ClassNotFoundException e) { return false; } } return true; } 
  1. find行if (this.mBuilder.isThemeAppCompat())然后更改为:
 if (this.mBuilder.isThemeAppCompat() && hasWindowDecorActionBar(params)) 
  1. 重新编译Layout.java – > Layout.class和Layout $ Builder.class
  2. 使用新类更新layoutlib.jar
  3. 重启日食

就这样。 现在,我可以使用API​​-23渲染所有与appcompat_v7_r19.1链接的旧应用程序布局。

你想做干净的项目。

我认为这是一个错误,直到现在还没有最终的解决方案,改为API比API-22更少是一个临时解决方案。