I have one Activity
and six different Fragments
attached to it. Each fragment has OnFragmentInteractionListener
interface and activity implements all these listeners in order to receive callbacks. It looks a little messy, so I'm interested are there some patterns/ways to simplify this and make more elegant?
How to handle multiple fragment interaction listeners in one Activity properly?
8.3k views Asked by MainstreamDeveloper00 At
2
There are 2 answers
3
On
My attempt at improving neonamu's answer:
You can define an interface like specified above, but a generic one
public interface OnListFragmentInteractionListener<T> {
void onListFragmentInteraction(String tag, T data);
}
Then in the host activity you can implement it specifically for the type you want, or like suggested above for Object:
public class MyFragActivity implements OnListFragmentInteractionListener<Object> {
...
@Override
public void onListFragmentInteraction(String tag, Object data) {
//do some stuff with the data
}
}
This way when you implement the interface depending on your application's needs, maybe you can reuse this interface in another situation.
A good solution could be use the SAME OnFragmentInteractionListener for all fragments, and use one param of each listener methods (like a TAG parameter) to identificate what fragment sent the action.
Here an example:
Make a new class and every fragment use this class
OnFragmentInteractionListener.java
In your activity:
You can use Object type to pass every type of data that you want ( then, in every if, you must convert Object to type that were necessary).
Using this way, maintenance is easier than have 6 differents listeners and a method for every type of data you want to pass.
Hope this helps.