[英]How to navigate from a composable to an activity or a fragment in Jetpack Compose?
[英]Android Jetpack Compose get Activity View Model from Fragment inside Composable
我在從可組合的片段中獲取活動視圖模型時遇到問題
private val birthdayViewModel: BirthdayViewModel by activityViewModels()
當我使用 viewModels() 時沒有問題
private val birthdayViewModel: BirthdayViewModel by viewModels()
以可組合的方式獲取視圖模型
val birthdayViewModel: BirthdayViewModel = viewModel()
val formItem by birthdayViewModel.birthdayFormItem.observeAsState()
問題是使用 activityViewModels 時表單項錯誤為 null 而使用 viewModels 時則不然
當我在調試模式下運行以檢查 formItem 的值時,我收到此錯誤消息:“找不到類型為 com.form.FormSpec$FormItem 的局部變量‘formItem’”
這可能是 gradle 版本控制問題嗎?
請幫忙 :)
如果您沒有使用 Hilt,假設您已經在您的活動中像這樣實例化了您的視圖模型:
val viewModel: YourViewModel by viewModels()
你可以使用這個獲得相同的實例:
val viewModel = viewModel(
modelClass = YourViewModel::class.java,
viewModelStoreOwner = LocalContext.current as YourActivity
)
private val activityViewModel: ActivityViewModel by activityViewModels()
private val fragmentViewModel: FragmentViewModel by viewModels()
Composable(fragmentViewModel, activityViewModel)
問題與范圍有關。 我沒有將視圖模型直接傳遞到我的可組合中,而是在可組合構造函數中執行此操作,這不會導致我的兩個視圖模型都具有片段范圍。
Composable(
fragmentViewModel: FragmentViewModel = viewModel(),
activityViewModel: ActivityViewModel = viewModel()
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.