是否可以在不传递参数的情况下使用 XML 中的默认参数调用 Kotlin 函数
这是我的 View 模型:
class MyViewModel: ViewModel(){
fun doSomething(myVar: String = "defValue"){
}
}
XML:....
<data>
<variable
name="viewModel"
type="com.example.MyViewModel" />
</data>
....
android:onClick="@{(view) -> viewModel.doSomething()}" --> ERROR
android:onClick="@{(view) -> viewModel.doSomething(`SomeString`)}" --> WORKING
....
当我调用 doSomething
没有来自带有数据绑定(bind)的 XML 参数的方法我收到错误。[databinding] {"msg":"cannot find method doSomething() in class com.example.MyViewModel","file":"app\\src\\main\\res\\layout\\fragment_list.xml","pos":[{"line0":56,"col0":41,"line1":56,"col1":65}]}
最佳答案
使用 @JvmOverloads
注释您的 Kotlin 方法. Java 没有默认参数的概念。此注解让 Kotlin 编译器生成一个无参数方法,因此您可以依次从 Java 和数据绑定(bind) XML 调用它。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-overloads/
关于android - 如何在数据绑定(bind)中不将参数传递给具有默认值的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62709712/