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

2022-08-31 22:22:34

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

enter image description here


答案 1

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

  • 正如martomstomstom在本答案中提到的,问题有时是由版本引起的,将其版本更改为更稳定的版本将解决问题:例如:com.android.tools.build:gradlecom.android.tools.build:gradle:3.4.0-alpha02com.android.tools.build:gradle:3.2.1

  • 此外,具有来自同一组但具有不同版本的库可能会导致问题甚至更多的运行时错误。使用如下排除组方法:在这种情况下,毕加索库使用android.support组件,毕加索中使用的Android库版本与您当前在应用程序中使用的版本不同,因此为了解决此问题,我们必须将其从其子库和类组中完全排除。 implementation('com.squareup.picasso:picasso:2.71828') { exclude(group: 'com.android.support') }

  • 它也可能由资源和代码的不匹配发生,包括您的活动中的此导入行也可以解决问题:import com.package.name.R

  • 有时,由于IDE,性能或内存,它可能会发生。不时清理项目可能会节省一些时间,在Android Studio上,它将是这样的: - 清理IDE现金也有助于提高性能和内存,在Android Studio上,它看起来像这样:Build -> Clean Project / Rebuild ProjectFile-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart

  • 我注意到,在导入新资源时,大多数时候都会发生此问题,在其名称中使用禁止的字符会触发错误,例如. , , - , UpperCase or special Letters

  • 作为一个建议,如果你使用的是Kotlin,我真的建议在你的活动中使用Kotlin扩展,例如:import,或者如果你使用的是自定义视图:之后,在活动的onCreat()方法中,你只需要调用id,例如:,或者从自定义视图中:kotlinx.android.synthetic.main.activity_page.*kotlinx.android.synthetic.main.view_layout.view.*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.RRAlt + Enter

编辑:

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

编辑:

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


答案 2

我使用com.android.tools.build:gradle:3.3.0-alpha13,并遇到了同样的问题。更改为稳定的版本3.2.1为我解决了这个问题。


推荐