Kotlin stdlib和Databinding

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

<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:textColor="#333333" android:text="@{viewModel.note}" android:visibility="@{viewModel.note.isNotEmpty ? View.VISIBLE : View.GONE}"/> 

产生编译错误

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

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

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

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

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

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