Kotlin 编译器:数据绑定错误,找不到方法
Kotlin compiler: Data binding error, cannot find method
从 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
和 Data Binding
实现此功能?
数据绑定编译器正在寻找静态方法。
由于仅命名 object
不足以在该对象 static
中创建所有方法,您需要在 hideNumber
方法上添加一个额外的 @JvmStatic
注释:
@JvmStatic
fun hideNumber(number: String): String {
return "****" + number.substring(number.length - 4)
}
另请参阅:https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#static-methods
从 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
和 Data Binding
实现此功能?
数据绑定编译器正在寻找静态方法。
由于仅命名 object
不足以在该对象 static
中创建所有方法,您需要在 hideNumber
方法上添加一个额外的 @JvmStatic
注释:
@JvmStatic
fun hideNumber(number: String): String {
return "****" + number.substring(number.length - 4)
}
另请参阅:https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#static-methods