MVP android应用程序中的演示者之间进行交流 [英] communicate between presenters in MVP android application
问题描述
我正在使用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屋!