渲染时引发异常:找不到操作栏的布局。

28

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

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

我已经尝试重新启动Android Studio、我的笔记本电脑和通过Google搜索答案,但是我找不到任何东西。有人遇到过类似的情况吗?


你在XML中使用了自定义视图或者一些“不寻常”的东西吗? - Mounir Elfassi
7个回答

78

我遇到了这种错误。在我的Mac上,有API 22。如果我选择它,就会出现这个错误。因此,选择API 21或更低版本可以解决你的问题。

图片描述

你可能需要更新你的工具。


1
直到我勾选了“自动选择最佳”选项,这个错误一直出现。 - Andre Figueiredo
1
谢谢您告诉我们,@Andre!这只是一个临时解决方案,但我们会找到一种使用API 22的方法。我回去工作后会更新答案。 - Glenn
1
我的经验是:我之前使用的是“自动选择最佳”,但是出现了错误。将其切换为“19”后,问题就解决了。 - Al Lelopath
是的,你说得对,在图形布局中将22改为21以解决这个问题。 - Đọc truyện hay

14

使用Eclipse的用户可以尝试选择Theme.DeviceDefault来消除异常。
更新:根据评论,这也适用于Android Studio。

输入图像描述

这也适用于Android Studio 2.2。这对我来说是解决方案。 - xaphod
由于这对Android Studio也有效(解决了我的问题),请更新答案并在Eclipse旁边加上Android Studio。 - Homayoun Behzadian

7
你可以通过两种方式解决这个问题:

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

请注意,保留了HTML标记。

Select API from the available

如果第一个解决方案不起作用,请更改主题。

enter image description here


对我来说,解决方案是选择“设备默认值” -> “设备默认”。 - xaphod

2

在编辑器中点击主题并更改主题:

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

我在这之后解决了我的问题。


@DimaSan:你所做的出色变化让你的分数大大提高了。 - Kushal Ramola

1
我在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. 找到这一行代码:if (this.mBuilder.isThemeAppCompat()),然后改为:

    if (this.mBuilder.isThemeAppCompat() && hasWindowDecorActionBar(params))

  1. 重新编译Layout.java -> Layout.class和Layout$Builder.class
  2. 使用新类更新layoutlib.jar
  3. 重启eclipse

这就是全部步骤了。现在,我可以使用API-23渲染所有链接到appcompat_v7_r19.1的旧应用程序布局。


0

你应该做一个干净的项目。


-1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接