gpt4 book ai didi

android - 将 R 文件与导致 ClassCastException 的代码同步

转载 作者:行者123 更新时间:2023-11-30 04:27:18 26 4
gpt4 key购买 nike

我昨天部署了一个应用程序的新版本。今天早上我在市场仪表板上报告了几个 ClassCastExceptions。发生异常是因为我的 java 代码使用 findViewById 来检索我正在转换到 Button 的元素。这引发了一个异常,因为检索到的元素实际上是一个 LinearLayout。为了解决这个问题,我从 eclipse 中复制了一份最新生成的 R 文件,并将其保存在一个文本文件中。我清理了项目并拿了一份新的 R 并比较了它们。与某些小部件关联的 ID 确实不同。按钮的 ID 是 LinearLayout 的 ID。我假设将这个清理过的项目部署到生产中现在可以解决这个问题。我的问题是我的代码如何在 R 文件和 xml 之间断开连接的情况下在本地运行?我将确保在部署之前运行干净的 future ,但这似乎是一个错误。

最佳答案

My question is how did my code run locally with this disconnect between the R file and the xml?

您的问题不在于“R 文件和 xml 之间的断开连接”。

您的问题是“R 文件”与其余代码之间的断开连接。

R.java 中的值被标记为 static final。因此,实际数字被内联到任何引用这些值的类的字节码中。有时 Android 会更新 R.java 文件,但不会清除项目中引用旧 R.java 文件的预编译类。 R.java 中更改的任何值现在都将与那些先前编译的类不同步。根据这些错误,您会遇到各种错误,例如 ClassCastException 作为 findViewById() 调用的结果。

就您如何能够在本地运行它而言,唯一的答案是您运行的 APK 与您上传的不同。

I will make sure to run a clean in future before I deploy

这是一个绝妙的主意。如果您选择为您的生产 APK 生成执行命令行构建,只需将 clean 添加到您的 ant 目标列表中。

but this seems like a bug

这无疑是构建工具的一个烦人的限制。请注意,这也会影响命令行构建过程。回到昔日的太平日子,当我不使用 Eclipse 时,我会在每个构建上做一个 clean(现在,这将是 ant clean debug install) .

关于android - 将 R 文件与导致 ClassCastException 的代码同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8267746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com