java - Kotlin stdlib 和数据绑定(bind)

标签 java android data-binding kotlin android-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}"/>

产生编译错误

Execution failed for task ':app:compileDevDebugJavaWithJavac'. java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:cannot find method isNotEmpty() in class java.lang.String file:D:\Projects\PushTracker-Android\app\src\main\res\layout\fragment_appointment_simple_details.xml loc:104:44 - 104:70 ****\ data binding error ****

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

最佳答案

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

为了使用该方法,您需要使用 Java 调用它的方式调用它,即静态函数:

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

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

关于java - Kotlin stdlib 和数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255482/

相关文章:

c# - 过滤 ObservableCollection 以仅显示某些项目

c# - 在不更新 UI 元素的代码中定义的 WPF 数据绑定(bind)问题

java - 子进程在 Windows 中既不会完成也不会中止?

Java继承和 Activity

android - Home 按键事件监听器

java - 在 Android 的聊天应用程序中创建文本气泡的更好选择?

xaml - mvvm 中的 3 状态复选框绑定(bind),无法设置空状态

java - AppEngine开发环境给出java.lang.VerifyError

java - 格式化输出

android - 如何将数学运算应用于 Android 尺寸?