我有一个标签布局。当用户单击选项卡时,我想在视图模型中调用“ 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) { }
在布局中,出现以下错误:侦听器类'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 -> }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句