如何通过 viewModels 获取 viewModel?(fragment-ktx)
如何通过 viewModels 获取 viewModel?(fragment-ktx)
我正在为Activity及其所有的fragment使用单一的viewModel。因此,为了初始化viewModel,我需要在所有fragment的onActivityCreated中编写以下设置代码:\noverride fun onActivityCreated(savedInstanceState: Bundle?) {\n super.onActivityCreated(savedInstanceState)\n viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.java)\n}\n我正在阅读Android KTX扩展页面(参见此处),我发现可以像这样初始化viewModel:\n// 获取与此Fragment范围绑定的ViewModel的引用\nval viewModel by viewModels
问题:如何通过viewModels获取viewModel?(fragment-ktx)
问题原因:在使用viewModels委托属性时,出现了一些混淆和困惑。有些人不确定viewModels委托属性是否只能在Fragment中使用,或者在Activity中是否也可以使用。
解决方法:根据回答中的信息,我们可以得出以下解决方法:
1. 确保在项目中添加了"androidx.fragment:fragment-ktx"依赖项。
2. 如果需要在Activity中使用委托属性,可以添加"androidx.activity:activity-ktx"依赖项,并使用类似的委托属性来获取Activity的ViewModel。
3. 确保使用的是最新版本的"androidx.fragment:fragment-ktx"依赖项,至少是1.1.0版本。
4. 如果遇到了问题,可以查阅官方文档来获取更多信息。
根据以上内容,我们可以得出以下结论:
- "androidx.fragment:fragment-ktx"依赖项是用于在Fragment中使用委托属性获取ViewModel的。
- 如果需要在Activity中使用委托属性获取ViewModel,可以添加"androidx.activity:activity-ktx"依赖项,并使用类似的委托属性来获取Activity的ViewModel。
- 确保使用的是最新版本的依赖项,以确保功能的稳定性和正确性。
- 如果遇到问题,可以查阅官方文档来获取更多信息和解决方案。
以上就是关于如何通过viewModels获取viewModel的问题原因和解决方法的整理。希望对大家有所帮助!