Error: android.support.design.internal.NavigationMenuItemVie



我正在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.support:设计库但没有安装NavigationView,我尝试使用

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

compile 'com.android.support:design:23.1.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'

我有错误在安卓工作室上渲染预览

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">

也许您可以尝试以下代码并重试:

./gradlew clean

或者这个:

gradle clean

根据我搜索到的一些链接,也许这些可以为你做一些技巧。

尝试来自以下位置的解决方案(我在下面添加了):NoClassDefFoundError:android.support.v7.internal.view.menu.MenuBuilder

编辑:

对我有效的解决方案是(使用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.** {*;}

归功于谷歌集团:https://code.google.com/p/android/issues/detail?id=78377#138

老答案(临时解决方法):它发生在我使用的项目中ActionBar中的微调器。我的解决方案是检查条件并更改应用程序流:

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问题,https://github.com/JoanZapata/android-iconify/issues/93你可以在哪里找到线索:

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

错误只发生在我使用com.android.支持:设计:22.2.1

将你构建的工具降级到22.2.0-这可能是安卓系统的问题。

相关内容

  • 没有找到相关文章

最新更新