3

I have a back stack of a few fragments and I need to know that I have returned to one from another.

Similar to when you have onActivityResult I was wondering if you could have a check for popBackStack() calls in a fragment?

I call it in another fragment here:

@Override
public void postFinished(){
    getFragmentManager().popBackStack();
}

Anything like this in android java?

Lewis Smith
  • 1,271
  • 1
  • 14
  • 39

3 Answers3

4

You Can add Listener for BackStackChange on your Activity page Like,

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

                       // Your Code Here

                }
            });
SHIDHIN TS
  • 1,557
  • 3
  • 26
  • 58
2
 getSupportFragmentManager().addOnBackStackChangedListener(
                new FragmentManager.OnBackStackChangedListener() {
                    public void onBackStackChanged() {
                        FragmentManager fm = getSupportFragmentManager();

                        if (fm != null) {
                            int backStackCount = fm.getBackStackEntryCount();
                            if (backStackCount == 0) {


                            }
                        }
                    }
                });

You can use addOnBackStackChangedListener with fm.getBackStackEntryCount(); which will give back stack count of fragments.

Suraj Vaishnav
  • 7,777
  • 4
  • 43
  • 46
0
you can do in onViewCreated() method:

if (savedInstanceState == null && !mAlreadyLoaded) {
    mAlreadyLoaded = true;

    // Do this code only first time, not after rotation or reuse fragment from backstack
}
Because when android put fragment on backstack, it only destroy its view, but don't kill instance itself, so mAlreadyLoaded will be still true when fragment will be restored from backstack.
Chetan Ansel
  • 398
  • 2
  • 20