Issue with onBackPressed() is not refresh fragment
If you want to add to back stack then you should use fragmentTransaction.add()
. replace
will just replace the fragment.
Also the right place to handle pop from backstack is through the use of OnBackStackChangedListener
like this
getFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
// find your fragment and do updates
}
});
A good reference Fragments onResume from back stack
Himadri
Updated on June 04, 2022Comments
-
Himadri almost 2 years
In my Android Application, I have two Fragments in my Activity, A and B.
In “A” Fragment I have developed one form and in that form some data is coming from a database. I have used a fragment transaction and replaced fragment “A” with fragment “B”.
Here is my code to replace Fragment A with FragmentB.
final FragmentManager fragmentManager = getFragmentManager(); final FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction(); FragmentB reload = new FragmentB(); fragmentTransaction.replace(android.R.id.content,reload); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit();
In “B” Fragment, I am fetching data from a server and storing it in an SQLite database so we can use the latest data in the application. When I click on the back button it returns back to Fragment “A” but all the data in Fragment “A” is not refreshed based on the newly-reloaded data.
Here is my code for main activity where I override
onBackPressed()
method:@Override public void onBackPressed() { // TODO Auto-generated method stub getFragmentManager().popBackStack(); }
I want to refresh Fragment A's data with the latest values from the database when I hit the back button from the main activity. As much I know we cannot do back-press event in fragment B. Please correct me if I am wrong and suggest me how I can solve issue.
Does anybody know how I can achieve it?