'receiver type mismatch' 有 Fragment 和 Anko toast

'receiver type mismatch' with Fragment and Anko toast

我正在尝试使用 Jetbrains 的 Anko 库在我的应用程序中轻松显示 Android toast 消息。

这里是相关的代码片段:

val message : CharSequence = "Recycled: ${holder.taskEditText.text}"
(tasksFragment as Fragment).toast(text = message)

和错误:

Error:(80, 45) Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public inline fun Fragment.toast(text: CharSequence): Unit defined in org.jetbrains.anko
public inline fun Fragment.toast(textResource: Int): Unit defined in org.jetbrains.anko
public fun Context.toast(text: CharSequence): Unit defined in org.jetbrains.anko
public fun Context.toast(textResource: Int): Unit defined in org.jetbrains.anko
public inline fun AnkoContext<*>.toast(text: CharSequence): Unit defined in org.jetbrains.anko
public inline fun AnkoContext<*>.toast(textResource: Int): Unit defined in org.jetbrains.anko

我是 Kotlin 的新手,一段时间以来一直在寻找解决这个问题的方法。感谢所有帮助。

由于错误提示 none 适用,因此您可能导入了与 Android/Support 库定义的不同的 Fragment class。

检查您的导入。

我在使用 import android.support.v4.app.Fragment 时遇到了同样的问题。

正如 Kingsley Adio 在之前的评论中所说,在模块 gradle 文件中指定的依赖项中添加以下行:

dependencies 
{
...
    implementation "org.jetbrains.anko:anko-support.v4-commons:$your_anko_version"
...
}

然后将此导入添加到您的 .kt 文件中:

import org.jetbrains.anko.support.v4.toast