업데이트 2020-06-16 : 현재 ViewModelProviders
는 더 이상 사용되지 않으며 더 이상 사용해서는 안됩니다. 이 질문과 답변은 그렇지 않은 2018 년 말부터있었습니다. 이 질문과 답변은 ViewModelProviders
AndroidX 버전이 아닌의 이전 Architecture Components 버전에도 적용 됩니다.
최신 종속성을 사용하는 경우 해당 android.arch.lifecycle:extensions:1.1.1
클래스가 없습니다 ViewModelProviders
.
그렇습니다. 이것을 증명하려면 :
Android Studio 3.2.1에서 새 프로젝트 생성 (Kotlin, minSdkVersion
21, "빈 활동"템플릿 사용)
모듈 android.arch.lifecycle:extensions:1.1.1
의 종속성에 추가app
이것은 당신에게 다음 app/build.gradle
과 같은 것을 줄 것입니다 :
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'
}
그러면 해당 클래스와 함께 "외부 라이브러리"에 라이브러리가 표시됩니다.
그리고 당신은 그 클래스를 참조 할 수 있습니다 :
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에 대한 설명서로 이동하면서이 클래스는 API 레벨 1.1.0에서 더 이상 사용되지 않습니다. ViewModelProvider.AndroidViewModelFactory를 사용하십시오.
이 주석은 ViewModelProviders.DefaultFactory
클래스 항목 아래에 있으며 해당 클래스를 참조합니다 ViewModelProviders
.
더 이상 사용되지 않는 코드를 대체하는 아이디어가 있습니까?
사용하십시오 ViewModelProviders
.