繁体   English   中英

Kotlin stdlib和数据绑定

[英]Kotlin stdlib and 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:发现数据绑定错误。 **** /数据绑定错误**** msg:在类java.lang.String文件中找不到方法isNotEmpty():D:\\ Projects \\ PushTracker-Android \\ app \\ src \\ main \\ res \\ layout \\ fragment_appointment_simple_details。 xml loc:104:44-104:70 **** \\数据绑定错误****

显然,数据绑定试图在Java的String中找到方法isNotEmpty() ,但是我可以强制数据绑定编译器使用kotlin的String吗?

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

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

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

编辑:此方法用@InlineOnly注释,因此该方法可能不在Kotlin代码之外。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM