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.1
tidak ada kelas seperti itu ViewModelProviders
.
Ya ada. Untuk menunjukkan ini:
Buat proyek baru di Android Studio 3.2.1 (dengan minSdkVersion
template Kotlin, 21, "aktivitas kosong")
Tambahkan android.arch.lifecycle:extensions:1.1.1
ke dependensi app
modul
Ini akan memberi Anda app/build.gradle
suka:
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.DefaultFactory
entri kelas dan merujuk ke kelas itu, bukan ViewModelProviders
:
Adakah yang dimaksud dengan penggantian kode usang di atas?
Gunakan ViewModelProviders
.