首页 > 解决方案 > 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)
}
}

我怎样才能使用Kotlinand来实现这个功能Data Binding

标签: kotlinandroid-databinding

解决方案


数据绑定编译器正在寻找静态方法。

由于单独命名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


推荐阅读