如何解决如何在 Android 自定义数据绑定中传递带参数的函数
我有一个选项卡布局。当用户单击选项卡时,我想在视图模型中调用“onTabChanged”函数。到目前为止,我已经尝试过这个:
@BindingAdapter("onTabChanged")
fun setOnTabChanged(tabLayout: TabLayout,onTabChanged: (TabLayout.Tab) -> Unit) {
tabLayout.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
tab?.let {
onTabChanged(it)
}
}
override fun onTabUnselected(tab: TabLayout.Tab?) {}
override fun onTabReselected(tab: TabLayout.Tab?) {}
})
}
在 layout.xml 中:
<data>
<variable
name="viewModel"
type="com.janfranco.ui.menu.MenuViewModel" />
</data>
...
app:onTabChanged="@{viewModel::onTabChanged}"
在视图模型中:
fun onTabChanged(tab: TabLayout.Tab) { }
在布局中,我收到以下错误:Listener class 'kotlin.jvm.functions.Function1超级 com.google.android.material.tabs.TabLayout.Tab,kotlin.Unit>' 与方法 'invoke' 不匹配任何方法的签名 'app:onTabChanged'
我该如何解决这个问题?
解决方法
在您的 viewModel
中而不是这样:
fun onTabChanged(tab: TabLayout.Tab) { }
你应该有这个:
val onTabChanged = { tab: TabLayout.Tab -> }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。