【问题标题】:MVP and multiple behavioursMVP 和多种行为
【发布时间】:2017-09-26 14:50:04
【问题描述】:

我一直在尝试使用MVPdagger 制作一个简单的记事本应用程序(我的第一个应用程序)。 我已经理解了大部分内容,但是如果我有多种行为,我会有点迷茫。我会解释的。
我的项目层次结构是这样的: Click here

  • MainActivity - 活动类,包含一个列表视图。
  • MainPresenter - 接口,包含一个设置容器方法和一个刷新方法
  • MainPresenterImpl - 演示者的实现
  • MainView - MainActivity 接口(用于 mvp)
  • Note_Container - 包含 NoteHandler 以加载保存笔记、创建/存储适配器并可以进行更改
  • 忽略空的noteactivity
  • di 文件夹用于依赖注入
  • models 只有一个 note 类,包含两个字符串
  • NoteHandler - 包含 NoteRepository 并在抛出异常时处理它们。
  • NoteRepository - 使用 gson 库保存和加载文件中的笔记。

在解释完所有这些之后,您应该(可能)已经了解项目的工作原理(随意批评层次结构)。
现在我想添加一个创建笔记的按钮。我将在 mainactivity 上添加侦听器并将其重定向到 Presenter...
但是演示者会处理代码以添加新注释(开始新意图等)还是我应该创建一个新类来独立处理这些东西?
如果我想在将来添加更多按钮,例如删除所有注释或启动帮助对话框,我应该为每个按钮创建一个处理代码的类吗?
我怎样才能组织这样的事情?

【问题讨论】:

  • 不错的设置。一个好的方法是让您的演示者委派大多数任务。演示者中的 onXXClicked 在视图、控制器或其他类上调用某些东西。在这种情况下,将您的应用程序导航到其他地方的视图。我会避免在您的演示者中引用上下文(从附加视图中)。

标签: java android mvp android-mvp


【解决方案1】:

导航没有在 MVP 模式中正式解决。嗯,我觉得有两个好办法:

1 - 您可以创建一个导航器/路由器来为您处理导航。所以演示者将所有这些逻辑都提交给导航器或......

2 - 您可以在 Activity 中处理屏幕变化。我真的相信屏幕变化是 View 的责任,所以你只需将导航命令传递给 View。喜欢:

interface MainView{
    void navigateToAddCardScreen()
    void navigateToLoginScreen()
    void navigateSomeScreen()
}

我更喜欢第二种选择。导航器使代码对我来说太细了......

希望能帮到你

【讨论】:

  • 除了导航之外,从列表中打开一个已经存在的便笺需要与便笺处理程序(存在于演示者中)进行通信并获取该便笺...我如何在没有“ Android 代码”在演示者上?
  • 您将点击传递给演示者,演示者与处理程序进行通信。然后它将结果传递给视图
猜你喜欢
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多