Ameya Waghmare
Ameya Waghmare

Reputation: 77

Handle Loading Data With Fragment Back Stack

I have two fragments Fragment A and Fragment B. I am using add fragment method in Main activity

 String backStateName = fragment.getClass().getName();
    FragmentManager fragmentManager = getSupportFragmentManager();
    boolean fragmentPopped = fragmentManager.popBackStackImmediate(backStateName, 0);

    if (!fragmentPopped) {
        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.add(R.id.frame_container_admin, fragment, backStateName);
        ft.addToBackStack(backStateName);
        ft.commit();
    }

After this, whenever I pres back from Fragment B I want to reload the data from server. How can I handle this?

Upvotes: 0

Views: 379

Answers (1)

mudit_sen
mudit_sen

Reputation: 1510

In your activity

create a listener for backstackchange

getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
            @Override
            public void onBackStackChanged() {
              try {

                  //Get current visible fragment
                  FragmentManager fragmentManager = ((AppCompatActivity) activity).getSupportFragmentManager();
                  Fragment currentVisibleFragment = fragmentManager.findFragmentById(R.id.container_fragment);


                 if(currentVisibleFragment instanceof FragmentB){
                    //Cast currentVisibleFragment to Fragment B and call method to request data again.
                    ((FragmentB)currentVisibleFragment).requestData();
                 }
              } catch (Exception e) {
                   e.printStackTrace();
              }
            }
}

Create a request data method in your fragment B with your request code.

Upvotes: 1

Related Questions