UPDATE 2020-06-16 : Saat ViewModelProviders ini sudah usang dan seharusnya tidak lagi digunakan. Pertanyaan dan jawaban ini berasal dari akhir 2018, padahal bukan itu masalahnya. Pertanyaan dan jawaban ini juga untuk edisi Komponen Arsitektur yang lebih lama ViewModelProviders, bukan edisi AndroidX.
Saat menggunakan dependensi terbaru android.arch.lifecycle:extensions:1.1.1tidak ada kelas seperti itu ViewModelProviders.
Ya ada. Untuk menunjukkan ini:
Buat proyek baru di Android Studio 3.2.1 (dengan minSdkVersiontemplate Kotlin, 21, "aktivitas kosong")
Tambahkan android.arch.lifecycle:extensions:1.1.1ke dependensi appmodul
Ini akan memberi Anda app/build.gradlesuka:
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'
}
Anda kemudian akan melihat perpustakaan itu muncul di "Perpustakaan Eksternal" dengan kelas itu:

Dan Anda akan dapat merujuk kelas itu:
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)
}
}
Pergi ke dokumentasi untuk ViewModelProviders, saya melihat komentar yang mengatakan: Kelas ini sudah usang di API level 1.1.0. Gunakan ViewModelProvider.AndroidViewModelFactory
Komentar itu ada di bawah ViewModelProviders.DefaultFactoryentri kelas dan merujuk ke kelas itu, bukan ViewModelProviders:

Adakah yang dimaksud dengan penggantian kode usang di atas?
Gunakan ViewModelProviders.