【问题标题】:StartActivityForResult to get images from gallery in MVVM architecture?StartActivityForResult 从 MVVM 架构中的图库中获取图像?
【发布时间】:2020-07-18 04:33:20
【问题描述】:

我正在为我的PhotoEditorActivity 使用 MVVM 架构,该活动扮演 View 角色。当用户单击“Pick Image”按钮时,我想启动图库以选择图像并取回其 uri 以更新 ImageView。我不知道在哪里打电话给startActivityForResult()

  • 从 View 调用startActivityForResult():这样,Activity 处理一切,ViewModel 和 Model 变得多余。
  • 从 ViewModel 调用 startActivityForResult(),View 从 ViewModel 观察 Uri:我可以将 Context 传递给 ViewModel 以启动活动,但我无法接收 uri,因为 ViewModel 没有 onActivityResult()
  • 从 Model 调用 startActivityForResult():View 将 Context 传递给 ViewModel,ViewModel 继续将 Context 传递给 Model。使用这种方式,我在使用第二种方式时面临同样的问题。

能否请您帮我如何正确地为这项业务应用 MVVM。每个组件应该包含什么?感谢您的关注。

【问题讨论】:

    标签: java android mvvm


    【解决方案1】:

    所有与 Android 相关的事情都最好在 View 中处理。具体使您的代码松散耦合取决于您打算如何处理您选择的图像/文件。 例如,如果您尝试将其作为位图上传,那么您应该在视图中创建位图并将其传递给视图模型。 此外,onActivityResult 现在已折旧。请参阅official documentation for it here。 您可能还想查看this answer for an example implementation of it

    【讨论】:

    • 谢谢你的回答,意思是我应该在View中启动Activity,不介意ViewModel和Model在这个任务中,对吧?
    • 是的。例如,当我想获取位置时,我在主活动中执行此操作,当生成位置时,我将它传递给视图模型,然后从那里进入我的存储库。如果您觉得答案有帮助,请投票。
    • 谢谢,您的回答对我有帮助,我已投赞成票
    • @TaQuangTu 你找到解决方案了吗?我也被困在这个问题上,请帮忙。
    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2021-03-29
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多