Kotlin stdlib和Databinding

是否有可能在xml中使用Kotlin stdlib中的方法? 例如这个代码

 

产生编译错误

执行任务失败:app:compileDevDebugJavaWithJavac’。 java.lang.RuntimeException:发现数据绑定错误。 **** / data binding error **** msg:无法在类java.lang.String文件中find方法isNotEmpty():D:\ Projects \ PushTracker -Android \ app \ src \ main \ res \ layout \ fragment_appointment_simple_details。 xml loc:104:44 – 104:70 **** \数据绑定错误****

很明显,数据绑定试图find方法isNotEmpty()在Java的字符串,但我可以强制数据绑定编译器使用kotlin的字符串?

“kotlin的字符串”不存在。 Kotlin的标准库定义了扩展方法来创建你所指的方法。 但是由于数据绑定库需要生成Java代码,因此无法find您所指的方法。

为了使用这个方法,你需要用Java调用它的方式来调用它,这是一个静态函数:

kotlin.text.StringsKt.isNotEmpty(viewModel.note)

编辑:这个方法是用@InlineOnly注释的,所以这个方法可能不存在Kotlin代码之外。