![](/img/trans.png)
[英]How to fetch the ViewModel using ViewModelProviders.of() on non-FragmentActivity?
[英]ViewModelProviders.of(FragmentActivity).get(ViewModel::class.java) asking for activity instead of viewmodel in get() call
由于无法预见的原因,ViewModelProviders.of(this).get()失败。这是在我的主要活动中调用的,该活动继承自FragmentActivity。 我实际上在.get()调用上遇到错误。 该错误表明它正在期待一个活动,而不是与文档相反的ViewModel。 我已经清除并使缓存无效。 我的猜测是我导入错误或旧版本的库
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.apsoftware.urbandictionary.R
class DefinitionActivity : AppCompatActivity() {
private lateinit var binding: ActivityPostListBinding
private lateinit var viewModel: DefinitionActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.postList.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
viewModel = ViewModelProviders.of(this).get(DefinitionViewModel::class.java)
binding.viewModel = viewModel
} }
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
implementation 'androidx.core:core-ktx:1.1.0-alpha04'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
implementation "com.squareup.okhttp3:okhttp:3.12.0"
implementation "com.squareup.retrofit2:retrofit:2.5.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.4.0"
implementation 'com.squareup.retrofit2:converter-moshi:2.5.0'
implementation 'com.squareup.moshi:moshi:1.6.0'
kapt 'com.android.databinding:compiler:3.1.4'
implementation "com.google.dagger:dagger:2.20"
kapt "com.google.dagger:dagger-compiler:2.11"
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
compileOnly "org.glassfish:javax.annotation:3.1.1"
implementation "io.reactivex.rxjava2:rxjava:2.2.2"
implementation "io.reactivex.rxjava2:rxandroid:2.0.2"
implementation "android.arch.lifecycle:extensions:1.1.1"
你已经宣布
private lateinit var viewModel: DefinitionActivity
即, viewModel
是DefinitionActivity
的实例。 它应该是一个DefinitionViewModel
以匹配您传递给get()
。
更改
private lateinit var viewModel: DefinitionActivity
至
private lateinit var viewModel: DefinitionViewModel
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.