Как опытный разработчик iOS, делающий мое первое приложение для Android, я пытаюсь использовать AndroidViewModel
, чтобы разрешить постоянство кросс-фрагмента / кросс-конфигурации в моем состоянии выполнения. Я использую AndroidViewModel
вместо ViewModel
, потому что мне нужен доступ к контексту приложения, чтобы загрузить некоторые статические ресурсы.
Это мой подкласс AndroidViewModel:
class QuestsViewModel(application: Application) : AndroidViewModel(application) {
// Some member state variables
}
И я пытаюсь получить к нему доступ из моего основного задания onCreate
, например:
val viewModel = ViewModelProviders.of(this,
ViewModelProvider.AndroidViewModelFactory(this.application))
.get(QuestsViewModel::class.java)
Но я получаю ошибку компилятора:
Введите параметр параметра T для оператора fun get (p0: Class): T
не удовлетворен: предполагаемый тип QhestViewModel! не является подтипом ViewModel!
Я не понимаю, почему он считает, что мой пользовательский класс ViewModel не является подклассом, когда ApplicationViewModel (от которого я наследуюсь) напрямую наследуется от ViewModel?
Для ясности я пытаюсь написать этот проект полностью на Kotlin (если это возможно). На всякий случай, мои зависимости gradle:
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.volley:volley:1.1.1'
def lifecycle_version = "2.0.0"
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"