androidandroid-fragmentsfragmentfragmentmanager

Passing data back to previous fragment from current fragment


I am Using Navigation Drawer in my app. I have one MainActivity and rest of are Fragments. So the issue is Suppose i have three fragments like A,B,C.

Now in A i have one button and i am sending data from A>B.
For example putSring("datafrom A","datafrom A");
Now in B i receive data From A.
I have one button in B,and i am sending data from B>C.
For example putSring("datafrom B","datafrom B");
Now in C i receive data From B.
Then, I have one Button in C,and sending data from C>B.
For example putSring("datafrom C","datafrom C");

So,seems like in B i am getting data from two different fragments. I tried with all using activity and it work well with startActivityforresult. but how can i manager when all are fragments.


Solution

  • When u are sending the data from Fragment A to Fragment B use the same boolean like below:-

    FragmentA -> FragmentB

    FragmentB ldf = new FragmentB ();
    Bundle args = new Bundle();
    args.putBoolean("BOOLEAN_VALUE",true);
    ldf.setArguments(args);
    
    getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();
    

    And when u are send data from Fragment C to Fragment B use the same BOOLEAN which is used in Fragment A to B like below-

    FragmentC -> FragmentB

    FragmentB ldf = new FragmentB ();
        Bundle args = new Bundle();
        args.putBoolean("BOOLEAN_VALUE",false);
        ldf.setArguments(args);
    
        getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();
    

    And in the last we have to check that value is recevied in FragmentB is from where like Fragment A OR FragemntC

    FragmentB

       Boolean getValue= getArguments().getBoolean("BOOLEAN_VALUE");  
       if(getValue)
       {
        //VALUE RECEIVED FROM FRAGMENT A
       }
       else
       {
       //VALUE RECEIVED FROM FRAGMENT C
       }