错误:android.support.design.internal.NavigationMenuItemView

错误:android.support.design.internal.NavigationMenuItemView,android,android-support-library,android-support-design,Android,Android Support Library,Android Support Design,我正在MotoG(棒棒糖5.1)上测试我的项目,并且有一个XperiaT2(KitKat 4.4)上没有的问题。错误日志为: java.lang.NoClassDefFoundError: android.support.design.internal.NavigationMenuItemView at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(C

我正在MotoG(棒棒糖5.1)上测试我的项目,并且有一个XperiaT2(KitKat 4.4)上没有的问题。错误日志为:

 java.lang.NoClassDefFoundError: android.support.design.internal.NavigationMenuItemView
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:309)
我正在使用android。支持:设计库,但不实例化NavigationView,我尝试使用

compile 'com.android.support:design:22.2.1'

但没有解决。也许这个问题与 以前的支持问题:appcompat库在我尝试使用23.1.1更低版本时发生了此错误

NoClassDefFoundError: android.support.v4.hardware.fingerprint.FingerprintManagerCompatApi23$1
我的实际Gradle配置是:

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.1'

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 21
    }
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:cardview-v7:23.0.1'
    compile 'com.android.support:recyclerview-v7:23.0.1'
请帮忙

更新

当我尝试使用

buildToolsVersion '23.0.2'
'com.android.support:appcompat-v7:23.1.1'
'com.android.support:design:23.1.1'
在android studio上渲染预览时出错

Exception Details java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.
即使这样使用我的主题

<style name="MyTheme" parent="Theme.AppCompat.Light">

尝试以下解决方案(我在下面添加):

编辑:

对我有效的解决方案是(使用Proguard)替换此:

-keep class android.support.v4.** { *; } 
-keep interface android.support.v4.** { *; }

-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
为此:

# Allow obfuscation of android.support.v7.internal.view.menu.**
# to avoid problem on Samsung 4.2.2 devices with appcompat v21
# see https://code.google.com/p/android/issues/detail?id=78377
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}
归功于谷歌集团: #138

旧答案(临时解决方法):它发生在我使用 操作栏中的微调器。我的解决办法是检查这些 条件和更改应用程序流:

public static boolean isSamsung_4_2_2() {
    String deviceMan = Build.MANUFACTURER;
    String deviceRel = Build.VERSION.RELEASE;
    return "samsung".equalsIgnoreCase(deviceMan) && deviceRel.startsWith("4.2.2");
}
然后在活动的onCreate方法中:

if (isSamsung_4_2_2()) {
    setContentView(R.layout.activity_main_no_toolbar);
} else {
    setContentView(R.layout.activity_main);
}
正如所指出的,这不是一个确定的解决方案,它只是一种解决问题的方法 允许用户访问有限的功能,同时 找到了永久的解决方案

这似乎是一个类似的问题,所以尝试一下,让我知道它是否有效

编辑:根据本期Gihub, 你在哪里找到这条线索:

使用com.android时没有错误。支持:设计:22.2.0

该错误仅在我使用com.android时发生。支持:设计:22.2.1


将您的构建工具降级到22.2.0-这可能是Android的问题。

也许您可以尝试以下代码,然后重试:

./gradlew clean
或者这个:

gradle clean

根据我搜索到的一些链接,这些可能会对您有所帮助。

您是否尝试使用buildToolsVersion'23.0.2'并编译'com.android.support:design:23.1.1'?@Coeus我尝试过并再次出现此错误:NoClassDefFoundError:android.support.v4.hardware.fingerprint.FingerprintManagerCompatApi23$1注意:尝试删除ProGuard。它已经被谷歌弃用了。我试过在Proguard上使用-保留类仍然不起作用。我不明白你的评论,删除Proguard是为了什么?如何做到这一点?#robindesu,请添加您的xml文件您指的是什么xml?a怎么说我实际上不使用NavigationView。如果有帮助,我可以发布主要活动的xml。
gradle clean