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代码之外。