UPDATE 2020-06-16 : Derzeit ViewModelProviders veraltet und sollte nicht mehr verwendet werden. Diese Frage und Antwort stammte von Ende 2018, als dies nicht der Fall war. Diese Frage und Antwort gilt auch für die ältere Edition von Architecture Components ViewModelProviders, nicht für die AndroidX-Edition.
Bei Verwendung der neuesten Abhängigkeit android.arch.lifecycle:extensions:1.1.1gibt es keine solche Klasse ViewModelProviders.
Ja da ist. Um dies zu demonstrieren:
Erstellen Sie ein neues Projekt in Android Studio 3.2.1 (mit Kotlin, minSdkVersion21, Vorlage "Leere Aktivität").
Fügen Sie android.arch.lifecycle:extensions:1.1.1zu den Abhängigkeiten des appModuls hinzu
Dies gibt Ihnen ein app/build.gradlewie:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.commonsware.myandroidarch"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
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.android.support.constraint:constraint-layout:1.1.3'
implementation 'android.arch.lifecycle:extensions:1.1.1'
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'
}
Sie werden dann sehen, dass die Bibliothek in "Externe Bibliotheken" mit dieser Klasse angezeigt wird:

Und Sie können auf diese Klasse verweisen:
package com.commonsware.myandroidarch
import android.arch.lifecycle.ViewModelProviders
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val provider = ViewModelProviders.of(this)
}
}
In der Dokumentation zu ViewModelProviders wurde ein Kommentar angezeigt, der besagt: Diese Klasse ist in API-Version 1.1.0 veraltet. Verwenden Sie ViewModelProvider.AndroidViewModelFactory
Dieser Kommentar befindet sich unter dem ViewModelProviders.DefaultFactoryKlasseneintrag und bezieht sich auf diese Klasse, nicht auf ViewModelProviders:

Irgendwelche Ideen, was ist der Ersatz für veralteten Code oben?
Verwenden Sie ViewModelProviders.