当前位置: 首页 > 知识库问答 >
问题:

错误:android。支持设计内部的NavigationMenuItemView

公冶高义
2023-03-14

我正在MotoG(Lollipop5.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'

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'

我在android工作室渲染预览时出错

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

共有2个答案

卞安邦
2023-03-14

请尝试以下解决方案:NoClassDefFoundError:android。支持v7.内部。看法菜单菜单生成器

编辑:

对我有用的解决方案是(使用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.support: design: 22.2.1

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

越健
2023-03-14

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

./gradlew clean

或者这个:

gradle clean

根据我搜索到的一些链接,这些可能会为您带来一些窍门。

 类似资料:
  • 我试图实现一个与Cheesesquare演示应用程序中类似的CollapsingToolBarLayout。 但是,我需要在进入活动时默认折叠工具栏(这样在手机上的横向模式下就不会占用太多空间)。 根据文档,使用标志似乎很容易实现。 但是,我没有获得所需的行为。相反,AppBarLayout一开始显示完全扩展,然后滚动出屏幕,只留下系统栏。 下面是我的布局(对芝士蛋糕的轻微修改):

  • 我已经构建了一个RESTendpoint,它使用Spring和Apache CXF2.5来使用和生成Application/JSON。 配置: 当我使用不受支持的内容类型(如application/xml)发送请求(使用REST客户端应用程序)时,我会得到一个内部服务器错误。我希望是405,因为endpoint不支持任何其他内容类型。为什么我会得到这个例外?

  • 我的应用程序在5.1.0中运行平稳,但当我在4.2.2中运行时,它显示错误: 我研究过这个。它说在gradle中添加向量支持错误,所以我补充道: 和gradle文件中的两个依赖项。 但它在4.4.2中显示了相同的错误。

  • 你好,你能帮帮我吗。我在模拟器上编译/运行代码时遇到了这个错误。这是我以前制作的示例教程。我使用了min Target API-15并编译了最新版本 AndroidRuntime:java.lang.RuntimeException:无法启动activity ComponentInfo{com.eccp.projects.ecosavers.ecosavers.ecosavers.activiti

  • 我按照http://developer.android.com/tools/support-library/setup.html的指示将支持库添加到我的android项目中,但遇到了这样的构建错误 Gradle:评估项目时出现问题:“projectname”。 没有方法的签名:org。格拉德尔。应用程序编程接口。内部的人工制品dsl。依赖项。DefaultDependencyHandler。com

  • 我试图制作我的第一个应用程序(hello world),并在手机上运行它,但当我单击run时,gradle返回了这个错误(我在这里研究了stackoverflow并试图关闭即时运行,但在我的情况下似乎不起作用): 后来编辑2:我想通了,我的电脑上安装了一个旧的jdk版本和最新的android studio,谢谢你的帮助。我只需要安装最新的jdk版本(8)