gpt4 book ai didi

java - 将 Java 转换为 Kotlin : Type mismatch. 需要 : MenuSlidingTabStrip. OnTabSelectedListener?发现 : (Nothing, Nothing) → Boolean

转载 作者:行者123 更新时间:2023-12-02 12:49:52 35 4
gpt4 key购买 nike

我正在将一个最初用 Java 编写的 Android 应用程序转换为 Kotlin。我很难理解以下错误消息:

Type mismatch.Required:MenuSlidingTabStrip.OnTabSelectedListener?Found:(Nothing, Nothing) → Boolean

这是发出错误信号的代码 fragment (在转换之前它工作得很好):

private var tabs: MenuSlidingTabStrip? = null //The Kotlinized class

tabs!!.setOnTabSelectedListner{ tab, category -> /*Type mismatch...*/
listView!!.post {
...
}
}

转换此 Java 代码后出现问题(在 MenuSlidingTabStrip 中找到):

public void setOnTabSelectedListner(OnTabSelectedListener listener) {
this.listener = listener;
}

public interface OnTabSelectedListener {
public void OnTabSelected(View tab, MenuCategory category);

}

Kotlin

  fun setOnTabSelectedListner(listener: OnTabSelectedListener?) {
this.listener = listener
}

interface OnTabSelectedListener {
fun onTabSelected(tab: View?, category: MenuCategory?)
}

你能看出问题所在吗?您需要更多代码吗?

最佳答案

我建议您使用本地支持的 lambdas 作为:

// make `this.listener` look like lambda signature as well
fun setOnTabSelectedListner(listener: (tab: View?, category: MenuCategory?) -> Unit) {
this.listener = listener
}

tabs!!.setOnTabSelectedListner { tab, category ->
// ...
}

如果您仍想通过手动定义的接口(interface)使用 SAM 转换,请使用 fun 关键字标记接口(interface),如 Kotlin 1.4-M1 Release changelog 中所述。 (仅适用于 Kotlin 1.4):

fun interface OnTabSelectedListener {
fun onTabSelected(tab: View?, category: MenuCategory?)
}

// call that method like this:
tabs!!.setOnTabSelectedListner(OnTabSelectedListener { tab, category ->
// ...
})

如果您还没有切换到 Kotlin-1.4(仍处于 beta 状态),如果您不愿意使用 native 提供的 lambda 语法,则必须手动实例化匿名对象:

tabs!!.setOnTabSelectedListner(object : OnTabSelectedListener {
override fun onTabSelected(tab: View?, category: MenuCategory?) {
// ...
}
})

关于java - 将 Java 转换为 Kotlin : Type mismatch. 需要 : MenuSlidingTabStrip. OnTabSelectedListener?发现 : (Nothing, Nothing) → Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63059867/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com