我正在为我的 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/