MVP android应用程序中的演示者之间进行交流 [英] communicate between presenters in MVP android application

查看:66
本文介绍了MVP android应用程序中的演示者之间进行交流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using MVP pattern to build a small test android app. I have two fragments Fragment B (I am using for sliding drawer) and Fragment A (main fragment). Both fragments have their own presenters. when I click on sliding draw it should send message or invoke a method in Fragment A to update view. I want to ask , how both fragments presenter can talk under MVP. I know other solutions but I want to do it through MVP pattern.

请提出一些MVP模式可用来处理此类情况的选项.

Please suggest some options that MVP pattern follows to deal such scenarios.

推荐答案

在MVP中, View 具有Context来启动另一个 View ,该另一个 View c1>或Activity,因此Fragments之间的任何转换都必须通过 View 进行.就您而言,您有:

In MVP, the View has the Context to start another View which is either another Fragment or Activity, so any transition between your Fragments has to be through the View. In your case, you have:

View1(滑动抽屉片段)< -----> Presenter1

View1 (Sliding Drawer Fragment) <-----> Presenter1

View2(主要片段)< -----> Presenter2

View2 (Main Fragment) <-----> Presenter2

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

You click on a widget on View1 and want to navigate to some screen on View2 using MVP. You can do it like this:

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

---------------------- View 1 ---------------------

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


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


---------------------- Presenter 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库.


I have written an MVP library here you might find helpful.

这篇关于MVP android应用程序中的演示者之间进行交流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆