错误:android.support.design.internal.NavigationMenuItemView
我正在MotoG(棒棒糖5.1)上测试我的项目,并且有一个XperiaT2(KitKat 4.4)上没有的问题。错误日志为:错误: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
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