Je travaille avec Single viewModel pour l'activité et tout son fragment.
Donc, pour initialiser viewmodel
s'il faut écrire ce code de configuration dans onActivityCreated
de tous les fragments
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.Java)
}
J'allais en profondeur la Android page d'extension KTX: ( voir ici )
et j'ai trouvé que je peux initialiser le modèle de vue comme ceci:
// Get a reference to the ViewModel scoped to this Fragment
val viewModel by viewModels<MyViewModel>()
// Get a reference to the ViewModel scoped to its Activity
val viewModel by activityViewModels<MyViewModel>()
J'ai donc ajouté ci-dessous les dépendances à mon gradle (application):
//ktx Android
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.fragment:fragment-ktx:1.0.0'
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
Mais quand j'essaie d'utiliser viewModels/activityViewModels
dans ma candidature, leur référence est introuvable.
Je veux de l'aide sur la façon d'utiliser ces extensions avec un exemple de base. J'ai essayé de rechercher des exemples sans en trouver.
Notez que vous pouvez utiliser Koin pour que cela fonctionne:
private val viewModel by viewModel<NoteViewModel>()
utiliserait l'importation
import org.koin.Android.viewmodel.ext.Android.viewModel
de la dépendance:
implementation "org.koin:koin-Android-viewmodel:+"
// change + en w/e est le dernier quand tu lis ceci
Vous utilisez cette dernière version alpha:
dependencies {
implementation 'androidx.fragment:fragment-ktx:1.2.0-alpha01'
}