Как получить список записей фрагментов backstack в android?

Я работаю над приложением, в котором вкладки реализованы с помощью FragmentActivity. Поскольку вкладки требуются во всем приложении, фрагменты широко используются, чтобы сделать приложение совместимым на всех версиях android.

способ получить список фрагментов, присутствующих на backstack. Спасибо.

2 ответов


на FragmentManager есть методы:

getBackStackEntryCount ()

getBackStackEntryAt (индекс int)

FragmentManager fm = getFragmentManager();

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

Если вы хотите проверить, какой фрагмент виден, и если вы знаете идентификатор представления, где находится фрагмент, сначала вам нужно добавить ниже в 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");
        }
    }

это обновит заголовок панели действий на прослушивателе изменений стека.