[英]Android (Kotlin): Type mismatch in Observer
我正在实现一个 MVVM Android 架构,其中在主应用程序组件( MainActivity
)中,我监听ModelView
的LiveData
存储是否有任何更改。 但是,在以下代码中:
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")
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.