是否可以在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}"/>
产生编译错误
任务&#39;:app:compileDevDebugJavaWithJavac&#39;执行失败。 java.lang.RuntimeException:发现数据绑定错误。 **** /数据绑定错误**** msg:在类java.lang.String中找不到方法isNotEmpty() 文件:d:\项目\ PushTracker功能的Android \应用\ SRC \主\ RES \布局\ fragment_appointment_simple_details.xml 当前:104:44-104:70 **** \数据绑定错误****
很明显,数据绑定尝试在Java的String中查找方法isNotEmpty()
,但是我可以强制数据绑定编译器使用kotlin的字符串吗?
答案 0 :(得分:2)
“kotlin的字符串”不存在。 Kotlin的标准库定义了扩展方法来创建您所指的方法。但由于数据绑定库需要生成Java代码,因此无法找到您所指的方法。
为了使用该方法,您需要使用Java调用它的方式来调用它,这是一个静态函数:
kotlin.text.StringsKt.isNotEmpty(viewModel.note)
编辑:此方法使用@InlineOnly
注释,因此此方法可能不存在于Kotlin代码之外。