Java StartActivityForResult在MVVM体系结构中从库中获取图像?

Java StartActivityForResult在MVVM体系结构中从库中获取图像?,java,android,mvvm,Java,Android,Mvvm,我将MVVM体系结构用于我的PhotoEditorActivity,该活动扮演查看角色。当用户单击“Pick Image”按钮时,我想启动gallery来选择一个图像并返回其uri以更新ImageView。我不知道在哪里调用startActivityForResult() 从视图调用startActivityForResult():通过这种方式,活动处理一切,视图模型和模型变得冗余 从ViewModel调用startActivityForResult()并从ViewModel查看Uri:我可以

我将MVVM体系结构用于我的
PhotoEditorActivity
,该活动扮演查看角色。当用户单击“Pick Image”按钮时,我想启动gallery来选择一个图像并返回其uri以更新ImageView。我不知道在哪里调用
startActivityForResult()

  • 从视图调用
    startActivityForResult()
    :通过这种方式,活动处理一切,视图模型和模型变得冗余
  • 从ViewModel调用
    startActivityForResult()
    并从ViewModel查看Uri:我可以将
    上下文
    传递到ViewModel以启动活动,但我无法接收Uri,因为ViewModel没有
    onActivityResult()
  • 调用
    startActivityForResult()
    from Model:View将
    Context
    传递给ViewModel,ViewModel继续将
    Context
    传递给Model。用这种方式,我面临着与第二种方式相同的问题

您能帮助我如何正确地将MVVM应用于该业务吗。每个组件应该包含什么?感谢您的关注。

所有与Android相关的事情都最好在视图中处理。具体地说,使代码松散耦合取决于您打算对所选的图像/文件执行什么操作。 例如,如果试图将其作为位图上载,则应在视图中创建位图并将其传递给视图模型。 此外,onActivityResult现在已折旧。看。
您可能还想查看。

谢谢您的回答,这意味着我应该在视图中启动触觉,并且不介意在此任务中查看模型和模型,对吗?是的。例如,当我想要获取位置时,我会在主活动中这样做,当生成位置时,我会将其传递到视图模型中,然后从那里进入我的存储库。如果你觉得答案有帮助,请向上投票。谢谢,你的答案对我很有帮助,我已经向上投票了