Android 工作室:android.support.v7.widget.Toolbar 无法启动

Android Studio: android.support.v7.widget.Toolbar can not be initiated

我正在为我的 android 应用程序开发工具栏,在创建 tool_bar.xml 文件后,IDE 显示无法启动以下 类 的错误 - android.support.v7.widget.Toolbar

完整的错误详细信息是

java.lang.NoClassDefFoundError: android/support/v7/appcompat/R$attr
    at android.support.v7.widget.Toolbar.<init>(Toolbar.java:191)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:413)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105)
    at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:177)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:214)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:142)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:413)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:321)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
    at com.android.tools.idea.rendering.RenderTask.compute(RenderTask.java:497)
    at com.android.tools.idea.rendering.RenderTask.compute(RenderTask.java:485)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:485)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:590)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel.run(AndroidDesignerEditorPanel.java:480)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:254)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request.run(Alarm.java:351)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

我的 tool_bar.xml 文件是:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

</android.support.v7.widget.Toolbar>

有人知道为什么会这样吗?我试过使缓存无效并重建和清理项目,但失败了。也切换到另一个 API 版本也没有成功。

可能您需要将应用主题设置为继承自 Theme.Appcompat 主题的内容。

编辑: 如果您导入了更多支持内容,请将其添加到其中:

compile ('com.android.support:recyclerview-v7:22.2.0') {
    exclude module: 'support-v7'
}
compile ('com.android.support:cardview-v7:22.2.0') {
    exclude module: 'support-v7'
}
compile 'com.android.support:appcompat-v7:22.2.0'

防止其他库导入错误版本的支持库。检查所有支持库是否具有相同版本。

步骤 1. 首先清理并重建项目。

步骤 2. 'Sync Project with Gradle files' 并更新布局。

如果问题没有解决,将渲染布局API版本降到低版本

好的,我终于解决了这个问题。我所做的只是将我的 Android Studio 更新到最新的稳定版本。我的是 1.2.1,最新的稳定版本是 1.2.2。这解决了问题。但是由于我对此进行了很多搜索并且发现我不是唯一遇到此问题的人,所以我想列出可能的 solutions/things 来尝试以防其他任何人发生这种情况:)

1.更新您的工具和 IDE

有时这可能只是您工具中的错误,或者 IDE 可以通过更新到最新版本来修复。

2。确保您已将正确的依赖项添加到 gradle 文件

没有添加正确的依赖项或正确版本的依赖项可以解决它。在这种情况下,@404notfound 在他的回答中提出了一些细节。看看这个。

3。清理项目然后Gradle同步

也尝试在较低的 API 级别上渲染,看看是否可行!

  • 清理项目
  • 重建项目
  • 同步Gradle

对我有用