如何在 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 匹配父高度(全屏)

如何制作只有上角圆角的BottomSheetDialog? [复制]

在 Android 中,BottomSheetDialog 未正确舍入顶角