【问题标题】:'receiver type mismatch' with Fragment and Anko toast与 Fragment 和 Anko toast 的“接收器类型不匹配”
【发布时间】:2023-03-28 17:43:01
【问题描述】:

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

这里是相关代码sn-p:

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 很陌生,并且一直在寻找解决这个问题的方法。感谢所有帮助。

【问题讨论】:

    标签: android kotlin anko


    【解决方案1】:

    由于错误显示不适用,您可能导入了一个不同于 Android/Support Library 定义的 Fragment 类。

    检查您的导入。

    【讨论】:

    • 啊。 Anko 库使用android.app.Fragment 我希望使用android.support.v4.app.Fragment
    • 您应该将anko-support-v4-commons 添加到您的依赖项列表中。然后你就可以使用同样的支持片段
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多