0

基于您不应该将 Android 视图或其他纯 Android 组件传递给ViewModel,或者在那里有 android 导入的想法,请考虑下一个用例:

从我的Fragment 我想启动某种图像处理操作,为此我需要使用我想要显示结果的当前 xml 视图初始化我的对象。因此,我使用视图组件在“片段”端创建它,然后将该对象传递给ViewModel.

我的问题是:

  1. 我正在传递ViewModel一个已经引用 Android 视图的对象。

  2. 中的逻辑ViewModel创建一个Bitmap并在处理后将该位图返回给观察它的片段,因此我在我的内部引用了一些 Android 位图库ViewModel

ViewModel如果我需要在那里完成工作,如何避免引用 Android 的东西?

4

1 回答 1

0

如果我对您的理解正确,您在 中夸大您的视图Fragment,然后在 中生成位图ViewModel,然后将其传回并将其设置在您的 中Fragment,并且在此过程中您需要将更多内容传递给ViewModel实例Application。如果是这种情况,您需要使用ViewModelFactory. 简而言之,您将编写一个为您创建的小类,ViewModel然后将其ViewModelProviders.of(this, ...)作为第二个参数传递给它。

用法显示在答案中。如果您环顾四周,您也应该能够在Google 示例中找到它的用法。

于 2018-05-01T16:37:51.353 回答