Reputation: 77
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
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