我是 kotlin 的新手,我已经从 java 转换了一些代码,但似乎有问题,findViewById(R.id.my_id) 中的 R 以红色突出显示,并显示此消息:“未解决的参考:R”..我一直在寻找解决方案,但我似乎没有弄清楚,那我该怎么办?这是一个截图:
原文由 Tamim Attafi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我是 kotlin 的新手,我已经从 java 转换了一些代码,但似乎有问题,findViewById(R.id.my_id) 中的 R 以红色突出显示,并显示此消息:“未解决的参考:R”..我一直在寻找解决方案,但我似乎没有弄清楚,那我该怎么办?这是一个截图:
原文由 Tamim Attafi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我使用了 com.android.tools.build:gradle:3.3.0-alpha13 并且遇到了同样的问题。更改为稳定版本 3.2.1 为我解决了这个问题。
原文由 martomstom 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答569 阅读
2 回答648 阅读✓ 已解决
4.9k 阅读
2 回答3.4k 阅读✓ 已解决
1 回答597 阅读
该问题可能由多种因素引起,
正如 martomstom 在本 回答 中提到的,问题有时是由
com.android.tools.build:gradle
版本引起的,将其版本更改为更稳定的版本可以解决问题:例如:com.android.tools.build:gradle:3.4.0-alpha02
与com.android.tools.build:gradle:3.2.1
此外,拥有来自同一组但版本不同的库可能会导致问题甚至更多运行时错误。使用如下排除组方法:
implementation('com.squareup.picasso:picasso:2.71828') { exclude(group: 'com.android.support') }
在这种情况下,picasso 库使用 android.support 组件,picasso 中使用的 android 库版本与您当前在应用程序中使用的版本不同,因此为了解决这个问题,我们必须将它从它的子库和类组中完全排除。它也可能因资源和代码不匹配而发生,在您的活动中包括此输入行也可能解决问题:
import com.package.name.R
有时它可能会因为 IDE、性能或内存而发生。不时清理项目可能会节省你一些时间,在 Android Studio 上它会是这样的:
Build -> Clean Project / Rebuild Project
- 清理 IDE 现金也有帮助考虑到性能和内存,在 Android Studio 上它看起来像这样:File-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart
我注意到这个问题在导入新资源时经常发生在我身上,在名称中使用禁止字符会引发错误,例如
. , , - , UpperCase or special Letters
作为建议,如果您使用的是 Kotlin ,我真的建议您在活动中使用 Kotlin 扩展,例如:导入
kotlinx.android.synthetic.main.activity_page.*
或者如果您使用的是自定义视图:kotlinx.android.synthetic.main.view_layout.view.*
之后也就是说,在活动的 onCreat() 方法中,您只需调用 ID,例如:my_edit_text_ID.text = "Kotlin Dbest!"
,或从自定义视图:mCostumView.my_edit_text_ID.text = "Kotlin Dbest!"
编辑 :
您必须只导入带有您的应用程序包名称的“R”库,在本例中为
com.example.package.R
有时根本没有导入该库,要导入它,请单击未解析的引用R
然后按Alt + Enter
编辑:
正如 tobltobs 在评论部分提到的:“大多数情况下,问题是由另一个错误引起的,该错误阻止构建系统创建生成的源。要找到根本原因,请查看 gradle 日志(下面的“切换视图”图标Build 输出中的绿色锤子)并查找与 R 或 BuildConfig 无关的错误(也已生成)。如果没有其他错误并且 R 的问题仍然存在,那么此列表中的某些内容可能会有所帮助。”
编辑:
正如 Patrick Beagan 所提到的,Kotlin 扩展现在已被弃用——我建议改用 ViewBinding