【问题标题】:ViewModelProviders.of(FragmentActivity).get(ViewModel::class.java) asking for activity instead of viewmodel in get() callViewModelProviders.of(FragmentActivity).get(ViewModel::class.java) 在 get() 调用中请求活动而不是 viewmodel
【发布时间】:2019-07-02 08:54:24
【问题描述】:

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"

【问题讨论】:

    标签: android gradle mvvm kotlin viewmodelproviders


    【解决方案1】:

    改变

     private lateinit var viewModel: DefinitionActivity
    

     private lateinit var viewModel: DefinitionViewModel
    

    【讨论】:

      【解决方案2】:

      你已经声明了

      private lateinit var viewModel: DefinitionActivity
      

      即,viewModelDefinitionActivity 的一个实例。它应该是 DefinitionViewModel 以匹配您传递给 get() 的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 2018-10-29
        • 2020-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多