Kotlin 编译器:数据绑定错误,找不到方法



JavaKotlin的迁移,我尝试将静态函数与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)
}
}

如何使用KotlinData Binding访问此功能?

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

由于仅命名object不足以使该对象中的所有方法都static,因此您需要在hideNumber-method上附加@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

最新更新