热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidStudio3.1.3-未解决的参考:R-Kotlin

如何解决《AndroidStudio3.1.3-未解决的参考:R-Kotlin》经验,为你挑选了4个好方法。

我是kotlin的新手,我已经从java转换了一些代码,但似乎有些不对劲,findViewById(R.id.my_id)中的R以红色突出显示,并显示以下消息:"未解析的引用:R"..我一直在寻找解决方案,但我好像不知道,所以我该怎么办?这是一个截图:

在此输入图像描述



1> 小智..:

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


Yup恢复到3.3.0-alpha13稳定3.2.1修复了这个问题!

2> Tamim Attafi..:

这个问题可能是由许多因素造成的,

正如martomstom在本回答中提到的那样,问题有时是由com.android.tools.build:gradle版本引起的,将其版本更改为更稳定版本可以解决问题:例如:com.android.tools.build:gradle:3.4.0-alpha02withcom.android.tools.build:gradle:3.2.1

此外,拥有来自同一组但具有不同版本的库可能会导致问题甚至更多的运行时错误.

它也可能由于资源和代码不匹配而发生,包括您活动中的这个输入行也可能解决问题: implementation('com.squareup.picasso:picasso:2.71828') { exclude(group: 'com.android.support') }

有时它会因为IDE,性能或内存而发生.不时清理项目可能会节省你一些时间,在Android Studio上它会是这样的:import com.package.name.R -在Android上清理IDE现金也有助于提高性能和内存Studio看起来像这样:Build -> Clean Project / Rebuild Project

我注意到在导入新资源时大多数时间都会发生这个问题,在名称中使用禁用字符会触发错误,例如 File-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart

作为一个建议,如果你正在使用Kotlin,我真的建议在你的活动中使用Kotlin扩展,例如:import . , , - , UpperCase or special Letters或者你正在使用自定义视图:kotlinx.android.synthetic.main.activity_page.* 之后,在活动的onCreat()方法中,你将会只需要调用id,例如:kotlinx.android.synthetic.main.view_layout.view.*或者从自定义视图中调用:my_edit_text_ID.text = "Kotlin Dbest!"

编辑:

我遇到过这个问题,问题是''​​R''库是从2个不同来源导入的:

com.android.R

com.example.package.R

您只能使用您的应用程序包名称导入"R"库,在这种情况下,mCostumView.my_edit_text_ID.text = "Kotlin Dbest!" 有时根本不导入库,导入它,单击未解析的参考com.example.package.R并按R


第一个选择对我来说是正确的选择.谢谢!
@KMC,很高兴能为您提供帮助,如果您仍然想使用这些库,则可以使用exclude方法,我已经更新了第二个项目符号,可以将其检出。

3> Sam..:

所以这是一个误导性错误.

我将解释30,000英尺的正在发生的事情.这不是精确的订单或精确的流程,它只是非常接近;)所以,如果你知道更多然后我做的确切的顺序和关心修改链接,感觉自由我不会停止你:).

过程

R文件是生成的代码.

有一代人的命令.

Gradle会做它的魔力,拉动它的依赖关系并首先启动它的警告和错误树,

然后Android在幕后将所有Kotlin转换为Java.是的,我们心爱的Kotlin仍然必须为我们心爱的ART虚拟机编译Java.

然后它会运行并执行您为JVM Statics创建的适配器以及一些其他任务.接下来,它首先编译所有xml数据绑定文件,以创建生成的数据绑定文件.

如果一切顺利,它将继续处理资产和资源.这会为您在代码中引用的每个资源创建指针或ID.接下来,它将贯穿并开始编译代码和打包过程.

非常直接的过程,但这里存在的问题.

误导性错误

如果在R生成完成之前任何步骤失败,则R不会生成.有时您需要进行简单的重建,有时只需要简单的文件 - >无效缓存和重启即可.但是,您的gradle,xml,数据绑定或适配器中的代码问题通常会阻止编译器进入R生成阶段.

所以下一个问题是

"拍好,如果错误毫无价值或根本不存在,我们如何解决问题".

首先让我们谈谈这些错误出现的许多方式.

找到重复的数据绑定类

第#行的xml绑定错误

无法找到bind的匹配签名:customAdapterMethod

找不到正确项目的R文件,只显示子模块的导入选项或不正确的命名空间R文件.

找不到活动/片段的DataBindingUtility或DataBinding

还有许多其他方式,太多,无法列出所有

接下来,让我们谈谈造成问题的潜在候选人.因为有很多大声笑.

Gradle同步问题

缓存问题(文件 - >重新启动和无效缓存)

具有错误命名空间的xml元素

具有错误ID或引用ID的xml元素无序(即,您说要在xml文档中较低的元素的右侧对齐,然后尝试引用它的兄弟元素)

xml数据绑定问题引用不存在或未正确键入的命名空间或成员

非自动填充点中的xml数据绑定问题,例如使用适配器的自定义属性,因为更难以发现.即bind:myCustomMethod = @"myObject.mistypedProperty()"

具有问题或重复签名的JVM静态适配器

字符串或Dimens文件中的重复或错误字符或任何其他xml文件

标记为@Binding的私有变量没有用于访问它的属性

标记为@Binding的成员变量与父类方法匹配,导致重复显示几乎不可能的错误

类型不匹配,例如使用带(Int)的适配器,但是您通过数据绑定传递(Int?),并且在编译时直到JVM Statics才会识别它

您在弹出窗口中选择了IMPORT以导入子模块的R文件而不是应用程序文件

在子类或父类中具有可绑定成员,但未在父类或子类的XML用法中为类转换提供完全限定的命名空间.由于数据绑定编译器不够智能,无法实现为类Foo提供的变量也是parentFoo基类,因此您必须将其限定为android:text ="@((com.path.parentFoo)foo).parentMethod"

在类中有一个方法名,它匹配"@Binding成员变量的生成属性",即firstName作为变量,但在父类或子类中有一个名为getFirstName的方法,因为您现在匹配的方法名称将是获取自动生成,从而导致dataBindingUtility重复类错误.

原因有很多,但这应该给你一系列的地方,但是这个列表可以继续认真.

不幸的是,这在前沿技术中发生了很多,其中UI工具还没有达到基于终端的工具的速度.所以我建议你从一个终端的项目根目录运行

bash gradlew assembleRelease --debug

当它失败时,它会.开始向上滚动日志,直到找到红色,在那里您可以看到实际发生故障并阻止下一个阶段发生.

当您开始处理数据绑定时,您会发现这特别有用.

小费:

当你开始处理数据绑定时,请确保你经常编译和运行,因为目标是在做其他文件之前立即识别,以确保你没有破坏生成并让你的生活更容易知道你刚刚添加的代码导致问题在走得太远之前.

在继续之前编译并运行以确认没有问题的时间.

如果添加一些JVM静态编译并运行

如果要将变量添加到要使用的XML中

如果在1个文件中绑定模型的属性

如果您向JVMStatic添加绑定

如果将可绑定成员或属性添加到模型

如果重构将可观察成员变量或属性重构为子类或基类

任何其他可影响生成代码的xml或绑定相关元素.

就像我上面提到的那样,原因是为了避免得到这么多的变化,找到与生成的数据绑定代码相关的通用模糊,可怕的错误就成了一个故障排除的噩梦.我确信这些工具会有所改进,但是现在,在更改数据绑定相关项目时,请自己帮个忙并编译并运行.

快乐的编码



4> Fireworks..:

使用gradle命令.
在Android Studio的右侧菜单中:
Gradle -> :app -> Tasks -> build -> clean.
之后,Gradle -> :app -> Tasks -> build -> build


推荐阅读
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
author-avatar
报告大王报报报报告大王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有