与Fragment和Anko吐司的“接收器类型不匹配”

时间:2017-06-07 13:26:51

标签: android kotlin anko

我正在尝试使用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很新,并且一直在寻找这个问题的解决方案。感谢所有帮助。

2 个答案:

答案 0 :(得分:2)

由于错误说没有一个适用,您可能导入了与Android /支持库定义的类不同的Fragment类。

检查您的进口。

答案 1 :(得分:0)

我在使用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