Android Studio 3.1.3 - 未解决的参考:R - Kotlin

新手上路,请多包涵

我是 kotlin 的新手,我已经从 java 转换了一些代码,但似乎有问题,findViewById(R.id.my_id) 中的 R 以红色突出显示,并显示此消息:“未解决的参考:R”..我一直在寻找解决方案,但我似乎没有弄清楚,那我该怎么办?这是一个截图:

在此处输入图像描述

原文由 Tamim Attafi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 641
2 个回答

该问题可能由多种因素引起,

  • 正如 martomstom 在本 回答 中提到的,问题有时是由 com.android.tools.build:gradle 版本引起的,将其版本更改为更稳定的版本可以解决问题:例如: com.android.tools.build:gradle:3.4.0-alpha02com.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”库是从 2 个不同的来源导入的:
   com.android.R

  com.example.package.R

您必须只导入带有您的应用程序包名称的“R”库,在本例中为 com.example.package.R 有时根本没有导入该库,要导入它,请单击未解析的引用 R 然后按 Alt + Enter

编辑:

正如 tobltobs 在评论部分提到的:“大多数情况下,问题是由另一个错误引起的,该错误阻止构建系统创建生成的源。要找到根本原因,请查看 gradle 日志(下面的“切换视图”图标Build 输出中的绿色锤子)并查找与 R 或 BuildConfig 无关的错误(也已生成)。如果没有其他错误并且 R 的问题仍然存在,那么此列表中的某些内容可能会有所帮助。”

编辑:

正如 Patrick Beagan 所提到的,Kotlin 扩展现在已被弃用——我建议改用 ViewBinding

原文由 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题