我正在使用 hilt 进行依赖注入,我找不到直接在可组合内获取视图模型的方法,因为我们不能将 @AndroidEntryPoint 注释与 compose 一起使用,当我从活动传递它时它工作正常..
问问题
361 次
3 回答
0
像这样的东西。。
@HiltViewModel
class MyVm @Inject constructor(
private val someDep: SomeDep,
) : ViewModel() {}
我的观点 - 在这种情况下考虑它的片段
@AndroidEntryPoint
class MYFragment : Fragment() {
private val viewModel: MyVm by viewModels()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return ComposeView(requireContext()).apply {
setContent {
MYTheme {
MyTopLevelComposableScreen(
viewModel = viewModel
)
}
}
}
}
}
还有我的顶级可组合
@Composable
fun MyTopLevelComposableScreen(vm:MyVm){
}
或直接在顶层可组合
@Composable
fun MyTopLevelComposableScreen(vm: MyVm = viewModel()){
}
https://developer.android.com/jetpack/compose/libraries#hilt
于 2021-09-17T21:02:11.317 回答
0
你可以像这样注入你的viewModel
@Composable fun MainScreen(viewModel: HomeScreenViewModel = hiltViewModel())
您可以在此链接中查看我的示例项目以获取更多信息github
于 2021-09-19T05:16:03.827 回答
0
首先,实现这个模块:
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07")
而且,您可以像这样使用它:
@Composable
private fun MyLayout() {
val vm: MyViewModel = viewModel() // @HiltViewModel
...
于 2021-09-19T16:03:09.740 回答