user1154390
user1154390

Reputation: 2429

communicate between presenters in MVP android application

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.

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

Upvotes: 10

Views: 2394

Answers (2)

Ali Nem
Ali Nem

Reputation: 5530

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 (Sliding Drawer Fragment) <-----> Presenter1

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

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

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

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

---------------------- Presenter 1 ----------------

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

---------------------- View 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();
}

---------------------- View 2 ---------------------

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

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

Upvotes: 0

abalta
abalta

Reputation: 1257

First of all, in MVP approaches, presenter and view have 1 to 1 relation to each other. If you want to communicate between presenters using bus system like EventBus/RxBus.

I recommend following tutorial. This is a 5 part series tutorial. In this tutorial, there are two fragments (Search and Cache Fragments) communicate between each other.

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

Upvotes: 0

Related Questions