Android Jetpack Compose 从 Composable 中的 Fragment 获取 Activity 查看模型

Android Jetpack Compose get Activity View Model from Fragment inside Composable

我在从可组合项中的片段获取 activity 视图模型时遇到问题

private val birthdayViewModel: BirthdayViewModel by activityViewModels()

当我使用 viewModels() 时没有问题

private val birthdayViewModel: BirthdayViewModel by viewModels()

像这样在组合中获取视图模型

val birthdayViewModel: BirthdayViewModel = viewModel()
val formItem by birthdayViewModel.birthdayFormItem.observeAsState()

问题是表单项在使用 activityViewModels 时错误为空,但在使用 viewModels

时则不然

当我 运行 在调试模式下检查 formItem 的值时,我收到此错误消息: “找不到类型为 com.form.FormSpec$FormItem 的局部变量 'formItem'”

这可能是 gradle 版本问题吗?

请帮忙:)

private val activityViewModel: ActivityViewModel by activityViewModels()
private val fragmentViewModel: FragmentViewModel by viewModels()

Composable(fragmentViewModel, activityViewModel)

问题与作用域有关。我没有将视图模型直接传递到我的可组合项中,而是在可组合项构造函数中执行此操作,这并没有导致我的两个视图模型都具有片段范围。

Composable(
   fragmentViewModel: FragmentViewModel = viewModel(), 
   activityViewModel: ActivityViewModel = viewModel()
)