如何解决kotlin 未解析参考 由于接收器类型不匹配,以下候选都不适用
Utils 类中的 HandleAPIError。针对 API 错误为 Snackbar 创建自定义方法。
未解析的参考。由于接收器类型不匹配,以下候选都不适用: public fun View.snackbar(message: String,action: (() → Unit)? = ...): Utils.kt文件中定义的Unit
在 requireview() 中 Fragment 中的接收器类型。用于活动的接收器类型。
实用工具.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
)
}
}
解决方法
尝试使用 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
)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。