ViewModelProviders弃用

androidx.lifecycle:lifecycle-*:2.2.0 中 ViewModelProviders被弃用。

但在官方文档中还未更新,还是使用的

MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class); 

最后在更新文档中找到了:

ViewModelProviders.of() deprecation: ViewModelProviders.of() has been deprecated. You can pass a Fragment or FragmentActivity to the new ViewModelProvider(ViewModelStoreOwner) constructor to achieve the same functionality when using Fragment 1.2.0.

翻译一下就是:
ViewModelProviders.of()弃用: ViewModelProviders.of()已弃用。你可以传 Fragment 或 FragmentActivity 给新的 ViewModelProvider(ViewModelStoreOwner) 构造函数,在使用 Fragment 1.2.0 时实现相同的功能。

ViewModelStoreOwner 是 interface,在 Fragment、FragmentActivity 的父类 ComponentActivity 中均实现了这个类。

解决:

kotlin:

val viewModel = ViewModelProvider(ViewModelStoreOwner)[XXViewModel::class.java]

Java:

MainViewModel viewModel = new ViewModelProvider(ViewModelStoreOwner).get(XXViewModel.class);

你可能感兴趣的:(其他)