Android Studio:android.support.v7.widget.Toolbar无法启动

时间:2015-07-05 15:52:20

标签: android xml android-studio android-toolbar

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

enter image description here

完整的错误详情

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$2.compute(RenderTask.java:497)
    at com.android.tools.idea.rendering.RenderTask$2.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$6.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$2.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$1.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版本也没有成功。

4 个答案:

答案 0 :(得分:1)

可能你需要将app主题设置为继承自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'

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

答案 1 :(得分:1)

好的,最后我解决了这个问题。我所做的只是将我的Android Studio更新为最新的稳定版本。我的是1.2.1,最新稳定的是1.2.2。这解决了这个问题。但是,由于我搜索了很多,并且发现我不是唯一一个遇到这个问题的人,我想列出可能的解决方案/事情来尝试这种情况发生在其他任何人身上:))

<强> 1。更新您的工具和IDE

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

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

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

第3。清洁项目,然后清除Gradle同步

还尝试在较低的API级别上进行渲染,看看是否有效!

答案 2 :(得分:0)

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

第2步。&#39;将项目与Gradle文件同步&#39;并更新布局。

如果问题未得到解决,请将渲染布局API版本降低到较低版本。

答案 3 :(得分:0)

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

它对我有用