kotlin - Kotlin 编译器:数据绑定错误,找不到方法
问题描述
从Java
迁移到Kotlin
我尝试使用静态函数Data Binding
:
<data>
<import type="com.package.domain.tools.helper.StringValidator"/>
...
</data>
然后我调用函数hideNumber
:
<com.hastee.pay.ui.view.Text
...
android:text='@{StringValidator.hideNumber(account.number)}'
app:layout_constraintRight_toRightOf="@+id/number"
app:layout_constraintTop_toBottomOf="@+id/number" />
在此处使用数据绑定会导致错误:
[kapt] An exception occurred:
android.databinding.tool.util.LoggedErrorException: Found data binding
errors.
****/ data binding error ****msg:cannot find method
hideNumber(java.lang.String) in class
com.package.domain.tools.helper.StringValidator....
这是这个对象:
object StringValidator {
...
fun hideNumber(number: String): String {
return "****" + number.substring(number.length - 4)
}
}
我怎样才能使用Kotlin
and来实现这个功能Data Binding
?
解决方案
数据绑定编译器正在寻找静态方法。
由于单独命名object
不足以在该对象中创建所有方法,因此您需要在-method上static
添加一个附加@JvmStatic
注释:hideNumber
@JvmStatic
fun hideNumber(number: String): String {
return "****" + number.substring(number.length - 4)
}
另见:https ://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#static-methods
推荐阅读
- python - Github 到谷歌 colab
- amazon-web-services - 集群置放群组中的所有实例是否会共享相同的操作系统?
- stream - Apache Beam:从具有固定窗口的 UnboundedSource 读取
- mongodb - MongoDB - 如何编写查询以查找所有元素与包含多个运算符的特定条件匹配的文档?
- javascript - Javascript 检查给定日期是否大于(d/m/yyyy)日期格式中的当前日期显示错误
- node.js - 无法将 bindNodeCallback 与 node-mysql connection.query 一起使用
- javascript - 如何在 PHP 页面中的 JS 中绑定两个文本字段并过滤两者?
- selenium - 元素无法在 Protractor 和 Selenium 中定位,因为浏览器顶部显示了另一个窗口
- python - 运行python py2app打包的Mac book应用(.app)文件时出现错误
- c# - 我想在 c# 中将字符串发送到串口以实现统一,但几乎没有卡住