如何在 BottomSheetDialog 中获取 ViewModel
Posted
技术标签:
【中文标题】如何在 BottomSheetDialog 中获取 ViewModel【英文标题】:How to get ViewModel in BottomSheetDialog 【发布时间】:2021-08-20 18:25:38 【问题描述】:我需要在我的 BottomSheetDialog 中引用 ViewModel。我没有找到任何解决方案。所以,我决定制作 wordViewModel 静态字段。不知道对不对。
问题是我无法将 Lifecycler 所有者传递给 ViewModelProvider。 我在 BottomSheetDialog.class 中尝试过这样,但是这一行抛出了异常:
wordViewModel = new ViewModelProvider(this).get(WordViewModel.class);
以下解决方案帮助了我。
MainActivity.class
public static WordViewModel wordViewModel;
wordViewModel = new ViewModelProvider(this).get(WordViewModel.class);
BottomSheetDialog.class
@OnClick(R.id.findBtn)
void findWordDefinition()
String mWord = wordText.getText().toString();
MainActivity.wordViewModel.getWord(mWord);
dismiss();
请说明如何正确解决。
【问题讨论】:
【参考方案1】:BottomSheetDialogFragment 和其他片段一样。所以你可以使用 requireActivity() 来获取生命周期所有者。
wordViewModel = new ViewModelProvider(requireActivity()).get(WordViewModel.class);
wordViewModel.getWord(mWord);
【讨论】:
以上是关于如何在 BottomSheetDialog 中获取 ViewModel的主要内容,如果未能解决你的问题,请参考以下文章
Android MVVM框架搭建高德地图定位天气查询BottomSheetDialog
Android MVVM框架搭建高德地图定位天气查询BottomSheetDialog
Android MVVM框架搭建高德地图定位天气查询BottomSheetDialog
如何使 BottomSheetDialog 匹配父高度(全屏)