【问题标题】:communicate between presenters in MVP android application在 MVP android 应用程序中的演示者之间进行通信
【发布时间】:2016-09-10 21:59:07
【问题描述】:

我正在使用 MVP 模式构建一个小型测试 android 应用程序。我有两个片段片段 B(我用于滑动抽屉)和片段 A(主要片段)。两个片段都有自己的演示者。当我单击滑动绘图时,它应该发送消息或调用片段 A 中的方法来更新视图。我想问一下,两个片段演示者如何在 MVP 下交谈。我知道其他解决方案,但我想通过 MVP 模式来做到这一点。

请建议 MVP 模式遵循的一些选项来处理此类情况。

【问题讨论】:

  • 你好,我也遇到了类似的情况..,你是怎么解决的?

标签: android android-fragments mvp


【解决方案1】:

首先,在 MVP 方法中,presenter 和 view 之间是一对一的关系。如果您想使用 EventBus/RxBus 等总线系统在演示者之间进行通信。

我推荐以下教程。这是一个 5 部分系列教程。在本教程中,有两个 Fragment(Search 和 Cache Fragments)相互通信。

https://hackernoon.com/yet-another-mvp-article-part-1-lets-get-to-know-the-project-d3fd553b3e21

【讨论】:

    【解决方案2】:

    在 MVP 中,View 具有 Context 来启动另一个 View,它可以是另一个 FragmentActivity,因此您的 @987654325 之间的任何转换@ 必须通过 View。在你的情况下,你有:

    View1(滑动抽屉片段) Presenter1

    View2(主片段) Presenter2

    您单击 View1 上的一个小部件,并希望使用 MVP 导航到 View2 上的某个屏幕。你可以这样做:

    ---------------------- 查看 1 ---------

    view1Item.setOnClickListener(new OnClickListener({
        presenter1.doWhenItem1IsClicked();
    }))
    

    ---------------------- 演示者 1 ----------------

    public void doWhenItem1IsClicked(){
        mView.showRelevantPageOnMainScreen()
    }
    

    ---------------------- 查看 1 ---------

    public void showRelevantPageOnMainScreen(){
        View2 view2=new View2(); //This is better to be done using DI
     getFragmentManager().beginTransaction().replace(R.id.your_main_page_layout,view2).commit();
    }
    

    ---------- 视图 2 ---------

    public void onCreate(){
    super.onCreate();
    presenter2=new Presenter2(this);
    }
    .
    .
    .
    

    我写了一个 MVP 库 here 你可能会觉得有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 2018-07-11
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多