How to pass result from second fragment to first fragment
android, android-fragments
Solution
Update
Activity is the parent controller and should take responsibility for handling those events raised by its fragments/views, which concern something outside of the scope of fragment/view itself.
A Fragment is to act as a sub-controller of Views it hosts. All the events and communication between its own views, the fragment should handle itself. When there is an event outside of a fragment's scope and responsibilities (like sending data to another fragment), that event should be escalated to its parent controller, the Activity.
Old
From this tutorial : http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
Its better to let the activity apply changes to its fragment than passing values directly between fragments. Let your Activity implement a `FragmentListener` interface with `onQuery(Bundle data)` and `onResult(Bundle data)` methods.
Create a `FragmentListener` varaible in each of your fragments and then override `onAttach()` of each fragment as:
public void onAttach(Activity activity) {
super.onAttach(activity);
//---register parent activity for events---
try{
fragmentListener = (FragmentListener) activity;
}catch (ClassCastException e)
{
throw new ClassCastException("Parent activity must implement interface FragmentListener.");
}
}
This will enforce your child fragments to be automatically registered to parent Activity.
Also, remember to release `fragmentListener` reference in `onDetach()`.
Now you can call your Activity from fragments.
On the other side, your Activity can always search for a fragment using `getFragmentManager().findFragmentByTag("fragmentA")` or `findFragmentById("FragmentA")`. If it can find your Fragment, Then it can cast it into your `FragmentA` class and call its methods. Same can be done with `FragmentB` or any other fragment..
Problem
In my app I have two fragments say fragmentA and FragmentB. When I click on a button in fragmetA, a list is opened in fragmentB. Now when I select an item from list in fragmentB I want the result to be passed to fragmentA. I am using only one TabActivity for all fragments. When list item is selected in fragmentB I am popping out fragmentB from stack so that I can directly go back to fragmentA. Does anyone knows how to pass result to previous fragment. Thanks.