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.4k views Asked by MainstreamDeveloper00 At
2
There are 2 answers
3
HenriqueMS
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.
Related Questions in JAVA
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
- Redirect inside java interceptor
- Push toolbar content below statusbar
- Animation in Java on top of JPanel
- JPA - How to query with a LIKE operator in combination with an AttributeConverter
- Java Assign a Value to an array cell
Related Questions in ANDROID
- Delay in loading Html Page(WebView) from assets folder in real android device
- MPAndroidChart method setWordWrapEnabled() not found
- Designing a 'new post' android activity
- Android :EditText inside ListView always update first item in the listview
- Android: Transferring Data via ContentIntent
- Wrong xml being inflated android
- AsyncTask Class
- Unable to receive extras in Android Intent
- Website zoomed out on Android default browser
- Square FloatingActionButton with Android Design Library
- Google Maps API Re-size
- Push toolbar content below statusbar
- Android FragmentPagerAdapter Circular listview
- Layout not shifting up when keyboard is open
- auDIO_OUTPUT_FLAG_FAST denied by client can't connect to localhost
Related Questions in ANDROID-FRAGMENTS
- Android - No view found for fragment
- Fragment AsyncTask not executing after back button pressed
- I want to Show Simple Toast Message When User Click On Media Controller button Pause/Start/Stop in video View Using Media Controller
- Call special fragment in Navigation Drawer Activity from separate Activity
- Android FragmentViewPager in Fragment
- How to restrict fragment from adding to top of stack if it already exist in the top of stack in android
- Android Studio - Illegal character 8204 error
- Adapter ListView not refreshing from Activity
- Fragment's Transaction replace on API-21 is staying behind
- Integrating Localytics - FragmentActivity
- Null pointer exception on view pager swipe
- Error:(24, 51) error: incompatible types: FragmentAcitvity cannot be converted to Fragment
- How to get menu options in actionbar aligned with fragments?
- Using Edittext in Fragment Activities outside the onCreateView method
- Clicking CardView to load a fragment
Related Questions in ANDROID-ACTIVITY
- Android - No view found for fragment
- Does a recreated activity remember the original intent started it?
- I want to Show Simple Toast Message When User Click On Media Controller button Pause/Start/Stop in video View Using Media Controller
- Why does this run out of memory? Shouldn't the Activities be released?
- How to check in an (Android) async task if the activity it was called from was finished?
- Android Resources Not Found Exception
- How to handle multiple activity task in android when press home?
- Google Play services LocationSettingsAPI - LocationSettingsRequest Dialog not Showing
- How to land or navigate to previous activity if click on back button
- How to scale the imageview and view with matrix using seekBar?
- how to get the URL from mainActivity to the second activity using intents?
- Coordinator Layout with Toolbar in Fragments or Activity
- NullPointerException error in Android: Unable to instantiate
- ListView OnItemClickListener with a new Activity
- How can i send main activity to inner class inside of Fragment java class?
Related Questions in FRAGMENTMANAGER
- getSupportFragmentManager().findFragmentById(R.id.frg_video_listing_video_listing_fragment);
- How to handle multiple fragment interaction listeners in one Activity properly?
- Fragments overlapping with DrawerLayout/NavigationView
- Create a fragment in fragment at childFragmentManager
- Issues with fragments
- Replacing fragments quickly causes a weird screenshot of the previous fragment to persist and brought forward
- Android replace fragment from one to another is not working
- FragmentStatePageAdapter doesn't remove child fragments
- FragmentTransaction .replace does not load all fragment components
- Android - Keeping the first fragment in backstack and don't re-create instance while replacing
- android- Replacing fragment in ViewPager from NavigationBar
- Fragment Hide and show on click
- Tabbed activity(fragment) to activity navigation using onClick
- Change the title of the tab in a fragment activity
- Fragment manager throws nullPointerException
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
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.