kotlin unresolved reference 由于接收器类型不匹配,以下候选者均不适用

Posted

技术标签:

【中文标题】kotlin unresolved reference 由于接收器类型不匹配,以下候选者均不适用【英文标题】:kotlin unresolved reference none of the following candidates is applicable because of receiver type mismatch 【发布时间】:2021-05-11 01:11:00 【问题描述】:

Utils 类中的HandleAPIError。为 API 错误创建 Snackbar 的自定义方法。

未解决的参考。由于接收器类型不匹配,以下候选均不适用: public fun View.snackbar(message: String, action: (() → Unit)? = ...): Unit 在文件 Utils.kt 中定义

requireview() 中 Fragment 中的接收者类型。用于活动的接收器类型。

Utils.kt

fun View.snackbar(message: String, action: (() -> Unit)? = null)
    val snackbar = Snackbar.make(this, message, Snackbar.LENGTH_LONG)
    action?.let 
        snackbar.setAction("Retry")
            it()
        
        snackbar.show()
    


fun Fragment.handleApiError(
    failure : Resource.Failure,
    retry : (() -> Unit)? = null
    )
    when
        failure.isNetworkError -> requireView().snackbar("Please check internet Connection", retry )
    


fun Activity.handleApiError(
    failure : Resource.Failure,
    retry : (() -> Unit)? = null
)
    when
        //which receiver type used for snackbar?
        failure.isNetworkError -> snackbar(
            "Please check internet Connection",
            retry
        )


【问题讨论】:

你解决了吗?我有一个示例问题,你能帮我吗? 【参考方案1】:

尝试将this.window.decorView.rootView 用作:

fun Activity.handleApiError(
        failure : Resource.Failure,
        retry : (() -> Unit)? = null
)
    when
        //which receiver type used for snackbar?
        failure.isNetworkError -> this.window.decorView.rootView.snackbar(
                "Please check internet Connection",
                retry
        )
    

【讨论】:

以上是关于kotlin unresolved reference 由于接收器类型不匹配,以下候选者均不适用的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱 Android-Kotlin 中的 `Unresolved reference: NavController` 错误?

kotlin使用代码javaClass或class.java报错:unresolved reference

Android的Kotlin的Unresolved reference:***(控件id)

kotlin unresolved reference 由于接收器类型不匹配,以下候选者均不适用

Android Studio 3.0 Unresolved reference: SupportedLanguages for AIConfiguration class in Dialogflow(

使用 kotlin-android-extensions 从子模块导入视图时未解析的引用