GÜNCELLEME 2020-06-16 : Şu anda ViewModelProviders kullanımdan kaldırıldı ve artık kullanılmamalıdır. Bu soru ve cevap, durumun böyle olmadığı 2018'in sonlarına aittir. Bu soru ve cevap ViewModelProviders, AndroidX sürümü değil, eski Architecture Components sürümü içindir.
En son bağımlılığı kullanırken android.arch.lifecycle:extensions:1.1.1böyle bir sınıf yoktur ViewModelProviders.
Evet var. Bunu göstermek için:
Android Studio 3.2.1'de yeni bir proje oluşturun (Kotlin, minSdkVersion21, "boş etkinlik" şablonu ile)
Modülün android.arch.lifecycle:extensions:1.1.1bağımlılıklarına ekleyinapp
Bu size bir app/build.gradlebeğeni verecektir :
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'
}
Daha sonra bu kitaplığın "Harici Kitaplıklar" da bu sınıfla birlikte göründüğünü göreceksiniz:

Ve bu sınıfa referans verebileceksiniz:
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)
}
}
ViewModelProviders belgelerine giderken, şöyle bir yorum gördüm: Bu sınıf, API seviyesi 1.1.0'da kullanımdan kaldırıldı. ViewModelProvider.AndroidViewModelFactory'yi kullanın
Yani comment altında olan ViewModelProviders.DefaultFactorysınıflara ve bu sınıfta değil, ifade eder ViewModelProviders:

Yukarıdaki kullanımdan kaldırılmış kodun yerine ne konacağına dair bir fikriniz var mı?
Kullanın ViewModelProviders.