简体   繁体   中英

How to get a list of backstack fragment entries in android?

I'm working on an application in which tabs are implemented using FragmentActivity . Since, tabs are required throughout the application, fragments are used extensively to make the application compatible on all the versions of android.

As a consequence, I'm facing a problem in visualizing as to what fragments are present on the backstack. I'm sure there is a way to retrieve the list of fragments present on the backstack . Thanks.

The FragmentManager has methods:

getBackStackEntryCount()

getBackStackEntryAt (int index)

FragmentManager fm = getFragmentManager();

for(int entry = 0; entry<fm.getBackStackEntryCount(); entry++){
   Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
}

If you want to check which fragment is visible and if you know the id of view where fragment is placed, first you have to add below in onCreate()

    getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() {

  @Override
  public void onBackStackChanged() {
    Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame);
    if (f != null){
      updateActionBarTitle(f);
    }

  }
});

private void updateActionBarTitle(Fragment fragment) {
        String fragClassName = fragment.getClass().getName();

        if (fragClassName.equals(FirstFragment.class.getName())) {
            setTitle("Home");
        } else if (fragClassName.equals(SecondFragment.class.getName())) {
            setTitle("Second");
        }
    }

This will update your action bar title on back stack change listener.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM