ViewModelProviders廃棄

2328 ワード

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.
翻訳してください.of()廃棄:ViewModelProviders.of()は廃棄されました.Fragment 1.2を使用して、FragmentまたはFragmentActivityを新しいViewModelProvider(ViewModelStoreOwner)コンストラクション関数に渡すことができます.0で同じ機能を実現します.
ViewModelStoreOwnerはinterfaceであり、Fragment、FragmentActivityの親であるComponentActivityでこのクラスが実現されている.
解決:
kotlin:
val viewModel = ViewModelProvider(ViewModelStoreOwner)[XXViewModel::class.java]

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