![](/img/trans.png)
[英]How do i use getIntent().getSerializableExtra to retrieve data from the database
[英]How do I set first values to the viewmodel of EditActivity from getIntent
我有一個 recyclerview 包含有關水果的信息行,如名稱、顏色、重量、描述、匹配的食物......
如果我單擊一個按鈕,它應該將這些行值加載到 Intent 中,並將我帶到 startActivityForResult: EditActivity。
好吧,視圖模型的原因是防止旋轉將值重置回 getIntent 中的值。 值僅在 mainactivity onreturnresultsomething... 方法中更新為 sql。
如果我在 mainactivity oncreate 中執行 '''mviewmodel.name = intent.getStringExtra(name,""):''',那只會在旋轉時覆蓋它,就好像根本沒有視圖模型一樣。
我正在考慮使用共享首選項,但有更好的方法,而 androidviewmodel 是一種反模式。
因此,從 getintent 開始,我如何將默認值添加到編輯活動中的視圖模型,並且它不會在旋轉時設置回原來的值?
謝謝大家!
將您的值放在 [SavedStateHandle] 上: https : //developer.android.com/reference/androidx/lifecycle/SavedStateHandle
mviewmodel.savedStateHandle.set("name",name)
在設置值之前,請檢查它是否為空,例如:
if(mviewmodel.savedStateHandle.get("name) == null){
mviewmodel.savedStateHandle.set("name",name)
}
您可以從這里查看: https : //developer.android.com/topic/libraries/architecture/viewmodel-savedstate
如果您使用當前的by viewModels
或底層的ViewModelProvider
模式,您的 ViewModel 將不會被重新創建,因此您可以將其添加為構造函數參數。
查看ViewModelProvider.Factory了解如何做到這一點。 此外,如果您打算使用 Dagger,但仍有參數,您想手動傳入,您可以查看此庫: https : //github.com/halcyonmobile/ViewModelFactoryGenerator
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.