我正在为我的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$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版本也没有成功。
答案 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)
它对我有用