【问题标题】:NoSuchFieldError: No static field listView1 of type I in class Lcom/disdemo/R$id; or its superclassesNoSuchFieldError: 类 Lcom/disdemo/R$id 中没有类型 I 的静态字段 listView1;或其超类
【发布时间】:2022-04-11 16:19:55
【问题描述】:

我有 activity_main.xml 中带有 listView1 的 module1(在 Android Studio 中)(存在于 module1 的 res 中)。此模块的 MainActivity 正在从同一 Android Studio 项目中的另一个模块 2 启动。

我尝试删除 module1 并再次创建一个具有相同 res 和 java 文件的新模块。我仍然遇到同样的问题。

【问题讨论】:

  • 我在settings.gradle和build.gradle中添加了模块
  • 我的其他模块之一中也有 activity_main.xml 布局,所以我收到了这个 NoSuchField 错误。我重命名了我的一个模块中的布局并且它起作用了。
  • 我的情况有点不同,因为我将字符串资源从一个模块移动到另一个模块。就我而言,我只需要在 Android Studio 中单击 Build > Clean 即可解决此问题。
  • 是的,对你来说这不是重复资源文件的问题,所以干净 -> 构建工作。

标签: android


【解决方案1】:

我认为您在库和模块中都有相同名称的布局,或者使用重复的资源 ID 膨胀多个 xml 布局。

【讨论】:

  • 是的,就是这样。我很快就明白了,但遗憾的是浪费了很多时间,因为错误消息不够直观。 Android Studio 应该开始记录更全面的错误消息。
  • 听起来不错!现在您应该将其标记为已批准,这样可以帮助其他人解决此类问题。
  • 如果你使用 AS 的 refactor-rename,它会重命名所有出现的 e.g. activity_main.xml,最好手动完成。
  • 我收到此错误是因为应用程序和模块中有两个同名的布局。谢谢!
  • 哦,我遇到了同样的问题,但在我的情况下,原因是应用程序和库的 AndroidManifest.xml 中的包名称相同。
【解决方案2】:

在这两个模块中,您都有一个activity_main.xml。请重命名一个文件。

更新: @kundan kamal 想要表达的是,您在两个模块中都有一个名称相似的布局文件。

【讨论】:

    【解决方案3】:

    您使用了多个模块并为任何 xml 布局提供了相同的名称,然后给出此错误,因此请重命名您的 xml 布局。

    【讨论】:

      【解决方案4】:

      如果我没有错,请纠正我... 我认为您的项目中的库和模块的名称相同,因此您必须重命名其中一个,然后才能正常工作

      【讨论】:

        【解决方案5】:

        在我的情况下,标识符是不同的。我按了Build > Rebuild Project。这是因为我将res/layout 划分为子文件夹,AS 停下来注意到 XML 的变化。详情请见Rebuild required after changing xml layout files in Android Studio

        【讨论】:

          【解决方案6】:

          这种错误发生在我身上一次,但使用 string 资源。我在翻译文件中配置了字符串,但没有在默认字符串资源文件中配置,所以这导致了崩溃。

          【讨论】:

            【解决方案7】:

            对我来说,proguard 规则有效。我有两个级别的proguard。首先在我的依赖项中,然后在我的应用程序中。必须在我的依赖 gradle 中执行此操作。

            保留 R.. 东西。

            -keepclassmembers class **.R$* {
                public static <fields>;
            }
            

            保留所有本机方法名称及其类的名称。

            -keepclasseswithmembernames class * {
                native <methods>;
            }
            

            【讨论】:

              【解决方案8】:

              检查您的 xml 是否在您编写逻辑以显示代码的同一模块/包/项目中。 在我的情况下,我的 xml 位于无法访问的不同模块中。

              【讨论】:

                【解决方案9】:

                我在使用 viewBinding 时遇到了这个问题。类名是SearchViewHolder,布局资源名是search_view_holder。这导致了混乱和崩溃。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-10-02
                  • 1970-01-01
                  • 2020-09-30
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-09-05
                  • 2019-08-28
                  相关资源
                  最近更新 更多