Issue with onBackPressed() is not refresh fragment

12,575

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

Share:
12,575
Himadri
Author by

Himadri

Updated on June 04, 2022

Comments

  • Himadri
    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?