如何在 Android 数据绑定中传递 null 参数
How to pass null argument in Android Databinding
为什么不能传空值?怎么解决?我在 Document.
中找不到任何提示
错误
****/ 数据绑定错误 ****消息:在 class kr.co.app.MyActivity.MyListener 文件中找不到方法 onClick(java.lang.Object, java.lang.Object):/Users/jujaeho/projects/app/src/main/res/layout/activity_my.xml loc:24:71 - 24:106 ****\数据绑定错误 ****
代码
class MyActivity {
interface MyListener {
fun onClick(abc: ABC?, count: Int?)
}
}
<layout>
<data>
<variable
name="handler"
type="kr.co.app.MyActivity.MyListener" />
</data>
<View
...
android:onClick="@{() -> handler.onClick(null, null)}" />
</layout>
如果您打算传递 null 为什么不能为您的 onClick 方法分配默认值
class MyActivity {
interface MyListener {
fun onClick(abc: ABC?=null, count: Int?=null)
}
}
想传null什么也可以传
我今天刚遇到这个问题,我所做的基本上是将null
参数转换为方法参数中期望的类型。在你的情况下,这应该是这样的:
<layout>
<data>
<import type="ABC" /> // just an illustration, specify the full package
<variable
name="handler"
type="kr.co.app.MyActivity.MyListener" />
</data>
<View
...
android:onClick="@{() -> handler.onClick((ABC) null, (int) null)}" />
</layout>
我不确定 int
转换,但您可以尝试或使用 Integer
包装器 class 进行转换。
为什么不能传空值?怎么解决?我在 Document.
中找不到任何提示错误
****/ 数据绑定错误 ****消息:在 class kr.co.app.MyActivity.MyListener 文件中找不到方法 onClick(java.lang.Object, java.lang.Object):/Users/jujaeho/projects/app/src/main/res/layout/activity_my.xml loc:24:71 - 24:106 ****\数据绑定错误 ****
代码
class MyActivity {
interface MyListener {
fun onClick(abc: ABC?, count: Int?)
}
}
<layout>
<data>
<variable
name="handler"
type="kr.co.app.MyActivity.MyListener" />
</data>
<View
...
android:onClick="@{() -> handler.onClick(null, null)}" />
</layout>
如果您打算传递 null 为什么不能为您的 onClick 方法分配默认值
class MyActivity {
interface MyListener {
fun onClick(abc: ABC?=null, count: Int?=null)
}
}
想传null什么也可以传
我今天刚遇到这个问题,我所做的基本上是将null
参数转换为方法参数中期望的类型。在你的情况下,这应该是这样的:
<layout>
<data>
<import type="ABC" /> // just an illustration, specify the full package
<variable
name="handler"
type="kr.co.app.MyActivity.MyListener" />
</data>
<View
...
android:onClick="@{() -> handler.onClick((ABC) null, (int) null)}" />
</layout>
我不确定 int
转换,但您可以尝试或使用 Integer
包装器 class 进行转换。