अद्यतन 2020-06-16 : वर्तमान ViewModelProviders
में पदावनत है और अब इसका उपयोग नहीं किया जाना चाहिए। यह सवाल और जवाब 2018 के अंत से था, जब ऐसा नहीं था। यह प्रश्न और उत्तर पुराने आर्किटेक्चर कंपोनेंट्स संस्करण के लिए हैं ViewModelProviders
, न कि AndroidX संस्करण।
नवीनतम निर्भरता का उपयोग करते android.arch.lifecycle:extensions:1.1.1
समय ऐसा कोई वर्ग नहीं होता हैViewModelProviders
।
हाँ वहाँ है। इसे प्रदर्शित करने के लिए:
Android Studio 3.2.1 (कोटलिन, 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 के दस्तावेज़ के लिए जा रहे हैं, मैंने एक टिप्पणी यह कहते हुए देखी: इस वर्ग को एपीआई स्तर 1.1.0 में पदावनत किया गया था। ViewModelProvider.AndroidViewModelFactory का उपयोग करें
वह टिप्पणी ViewModelProviders.DefaultFactory
कक्षा में प्रवेश के नीचे है और उस वर्ग को संदर्भित करती है, न कि ViewModelProviders
:
किसी भी विचार ऊपर पदावनत कोड के प्रतिस्थापन क्या है?
का उपयोग करें ViewModelProviders
।