簡體   English   中英

不推薦使用“ViewModelProviders”。 Java解決方案?

[英]'ViewModelProviders' is deprecated. Java solution?

'ViewModelProviders' 已從 androidx.lifecycle:lifecycle-*:2.2.0-alpha03 https://developer.android.com/jetpack/androidx/releases/lifecycle#2.2.0-alpha03 中棄用 這里是 Kotlin 'ViewModelProviders' 的解決方案已棄用。 將 Lifecycle-extensions:2.1.0 升級到 2.2.0-alpha05 之后,Java 版本是什么? ViewModelProvider(this).get(MyViewModel.class) 不適用於 Java。

ViewModelProviders.of(this).get(MyViewModel.class); - 已棄用

新的 ViewModelProvider(this).get(MyViewModel.class); - 正確的

謝謝@EpicPandaForce!

通用示例(直到 android.arch.lifecycle:extensions:1.1.0)。 它從 1.1.1 開始被棄用,

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

通用示例(適用於 android.arch.lifecycle:extensions:1.1.1)

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

或者,使用 ViewModelStore 鏈接

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

您還可以為您的 ViewModel 創建一個 CREATOR 對象,並從您的活動中調用這個對象,這個對象將作為一個工廠對象,您可以在調用任何 ViewModelFactory 時調用它。

ViewModelProviders.of(this, ViewModelFactoryObject).get(ViewModel::class.java).apply{}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM