繁体   English   中英

Android (Kotlin):观察者中的类型不匹配

[英]Android (Kotlin): Type mismatch in Observer

我正在实现一个 MVVM Android 架构,其中在主应用程序组件( MainActivity )中,我监听ModelViewLiveData存储是否有任何更改。 但是,在以下代码中:

private final var viewModel:ScheduleViewModel = ViewModelProviders.of(this).get(ScheduleViewModel::class.java)

viewModel.getSchedule().observe(this, object:Observer<String> {
    fun onChanged(feed:String){
    }
})

我收到以下错误:

Required: Observer<in String!>
Found: 

以下是我的进口:

import android.os.Build
import android.os.Bundle
import android.util.Base64
import androidx.annotation.Nullable
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProviders
import androidx.loader.app.LoaderManager
import androidx.loader.content.Loader
import androidx.viewpager.widget.ViewPager
import com.example.mvvmarchitecture.ui.main.TabsAdapter
import com.google.android.material.tabs.TabLayout
import java.io.InputStream
import java.net.HttpURLConnection
import java.net.URL
import java.util.*

要解决此问题,请将Observer<String>替换为Observer<in String>

但更简单的是,使用 lambda 而不是匿名 object,因此您不必担心匹配类型:

viewModel.getSchedule().observe(this) { feed ->
    //...
}

viewModel.getSchedule()返回什么? 如果您的 function 是这样定义的

fun getSchedule():MutableLiveData<String>(){
// your code
return liveDataOfString
}

这应该编译。

viewModel.getSchedule().observe(this, object :androidx.lifecycle.Observer<in String> {
            override fun onChanged(t: String?) {
                TODO("Not yet implemented")
            }

        })

https://kotlinlang.org/docs/generics.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM