【问题标题】:How to get ViewModel in BottomSheetDialog如何在 BottomSheetDialog 中获取 ViewModel
【发布时间】: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();
    }

请说明如何正确解决。

【问题讨论】:

    标签: java android mvvm architecture components


    【解决方案1】:

    BottomSheetDialogFragment 和其他片段一样。所以你可以使用 requireActivity() 来获取生命周期所有者。

    wordViewModel = new ViewModelProvider(requireActivity()).get(WordViewModel.class);
    wordViewModel.getWord(mWord);
    

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2017-07-31
      • 2019-02-17
      • 2018-12-29
      • 1970-01-01
      相关资源
      最近更新 更多