我的活動中有很多片段,每個片段都在 VM 中使用自己的方法。在每個片段中,我必須在以這種方式使用它之前創建 viewmodel 實體:
val retrofitService = RetrofitService.getInstance(requireContext())
val mainRepository = MainRepository(retrofitService)
val viewVM = ViewModelProvider(
this@FragmentName,
AppVMFactory(mainRepository)
).get(AppViewModel::class.java)
在我的 MainRepository 我有我的請求方法:
class MainRepository constructor(private val retrofitService: RetrofitService) {
suspend fun someMethod() = retrofitService.someMethod()
}
在改造服務中,我有 api requests 方法。主要問題是如何在不使用此代碼的情況下僅創建一次 viewModel 實體:
val retrofitService = RetrofitService.getInstance(requireContext())
val mainRepository = MainRepository(retrofitService)
val viewVM = ViewModelProvider(
this@FragmentName,
AppVMFactory(mainRepository)
).get(AppViewModel::class.java)
在每個片段中。一開始我考慮的是單片段父級,但我不確定它是否可以用于 dialogFragment 以及它如何能夠與資料系結一起使用。也許我可以使用一些我不知道的android開發功能?
uj5u.com熱心網友回復:
您可以使用 sharedViewModel,它將在活動中的所有片段之間共享https://developer.android.com/topic/libraries/architecture/viewmodel#sharing
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/496429.html