java - StartActivityForResult 从 MVVM 架构中的图库中获取图像?

标签 java android mvvm

我正在为我的 PhotoEditorActivity 使用 MVVM 架构,该 Activity 扮演 View 角色。当用户单击“选择图像”按钮时,我想启动图库以选择图像并取回其 uri 以更新 ImageView。我对在哪里调用 startActivityForResult() 感到困惑。

  • 从 View 调用 startActivityForResult():通过这种方式,Activity 处理一切,ViewModel 和 Model 变得多余。
  • 从 ViewModel 调用 startActivityForResult() 并且 View 观察来自 ViewModel 的 Uri:我可以将 Context 传递给 ViewModel 以启动 Activity ,但我无法接收 uri,因为 ViewModel 确实没有 onActivityResult()
  • 从模型中调用 startActivityForResult():View 将 Context 传递给 ViewModel,ViewModel 继续将 Context 传递给 Model。使用这种方式,我面临与第二种方式相同的问题。

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

最佳答案

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

关于java - StartActivityForResult 从 MVVM 架构中的图库中获取图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62964662/

相关文章:

java - 是否有一种标准方法可以跨网络同步对象映射?

android - 如何在 Parse.com 中验证 deviceToken 的 GCM 发件人 ID

c# - 我可以以某种方式暂时禁用 WPF 数据绑定(bind)更改吗?

android - 为什么 BroadcastReceiver 在 Android 条件下不进入 else

wpf - 使用 MVVM 模式时如何绑定(bind)到应用程序设置并能够编写单元测试?

design-patterns - CQRS 和命令去抖动

java - 如何在 Web ui 中更新使用服务帐户 api 上传的 Google Drive 文档?

Java boolean 方法需要额外的 return 语句吗?

java - 禁用除 java swing 中的文本区域之外的所有触发器

Android Studio 发布签名 apk :app:transformClassesAndResourcesWithProguardForRelease java. io.IOException