如何在Android数据绑定中传递null参数

时间:2018-11-13 11:58:48

标签: android-databinding

为什么不能传递空值?如何解决?我从Document中找不到任何提示。

错误

**** /数据绑定错误**** msg:在类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>

2 个答案:

答案 0 :(得分:1)

如果您打算传递null,为什么不能为onClick方法分配默认值

class MyActivity {
  interface MyListener {
    fun onClick(abc: ABC?=null, count: Int?=null)
  }
}

如果要传递null,则什么也不能传递

答案 1 :(得分:0)

我今天刚遇到这个问题,而我所做的基本上是将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包装类进行转换。