首页 文章

在MVP android应用程序中的演示者之间进行通信

提问于
浏览
7

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

请建议MVP模式遵循的一些选项来处理这些场景 .

2 回答

  • 0

    首先,在MVP方法中,演示者和视图彼此之间具有1对1的关系 . 如果您想使用EventBus / RxBus等总线系统在演示者之间进行通信 .

    我推荐以下教程 . 这是一个由5部分组成的系列教程 . 在本教程中,有两个片段(搜索和缓存片段)彼此之间进行通信 .

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

  • 0

    在MVP中,View使用 Context 来启动另一个View,它是另一个 FragmentActivity ,因此 Fragments 之间的任何转换都必须通过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你可能会觉得有帮助 .

相关问题