ViewModelProviders.of (FragmentActivity) .get (ViewModel :: class.java) запрашивает активность вместо viewmodel в вызове get () - PullRequest
0 голосов
/ 08 февраля 2019

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"

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Изменить

 private lateinit var viewModel: DefinitionActivity

на

 private lateinit var viewModel: DefinitionViewModel
0 голосов
/ 08 февраля 2019

Вы объявили

private lateinit var viewModel: DefinitionActivity

Т.е. viewModel является экземпляром DefinitionActivity.Это должно быть DefinitionViewModel, чтобы соответствовать тому, что вы передаете в get().

...