ViewModelProviders is deprecated in 2.2.0
Asked Answered
U

3

7

Currently I update androidx.lifecycle:lifecycle-extensions version from 2.2.0-alpha01 to 2.2.0and it shows that ViewModelProviders is depricated. So what is the alternative way to use ViewModelProviders in kotlin?

Uird answered 21/2, 2020 at 5:50 Comment(1)
ViewModelProvider(this).get(ChatViewModel::class.java)Lambda
M
5

As it says in the documentation, you can now simply use the ViewModelProvider constructors directly. It should be mostly a matter of changing ViewModelProviders.of( to ViewModelProvider(, but you can see the complete listing of exactly which new methods correspond to which old ones in the documentation as well.

In Kotlin, you can also use the by viewModels() property delegate within your Activity/Fragment to get individual ViewModels. For example:

val model: MyViewModel by viewModels()
Meld answered 21/2, 2020 at 6:24 Comment(0)
C
12

older version

var viewModel = ViewModelProviders.of(this).get(BaseViewModel::class.java)

Now alternative

In java

viewModel = ViewModelProvider(this).get(BaseViewModel.class);

In kotlin

var  viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)

Refs - https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders

Cornelison answered 5/5, 2020 at 11:41 Comment(1)
in Java "viewModel = new ViewModelProvider(this).get(BaseViewModel.class);"Mayotte
P
8

For example, if you are using an older version.

MyViewModel myViewModel = new ViewModelProviders.of(this, new MyViewModelFactory(this.getApplication(), "Your string parameter")).get(MyViewModel.class);

For Example, for the latest version

MyViewModel myViewModel = new ViewModelProvider(this, viewModelFactory).get(MyViewModel.class);

OR, Use ViewModelStore link

MyViewModel myViewModel = new ViewModelProvider(getViewModelStore(), viewModelFactory).get(MyViewModel.class);
Paratroops answered 8/4, 2020 at 3:32 Comment(0)
M
5

As it says in the documentation, you can now simply use the ViewModelProvider constructors directly. It should be mostly a matter of changing ViewModelProviders.of( to ViewModelProvider(, but you can see the complete listing of exactly which new methods correspond to which old ones in the documentation as well.

In Kotlin, you can also use the by viewModels() property delegate within your Activity/Fragment to get individual ViewModels. For example:

val model: MyViewModel by viewModels()
Meld answered 21/2, 2020 at 6:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.