Подтвердить что ты не робот

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

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

Как следствие, я сталкиваюсь с проблемой визуализации того, какие фрагменты присутствуют в backstack. Я уверен, что существует способ получить список фрагментов, присутствующих в backstack. Спасибо.

4b9b3361

Ответ 1

FragmentManager имеет методы:

getBackStackEntryCount()

getBackStackEntryAt (индекс int)

FragmentManager fm = getFragmentManager();

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

Ответ 2

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

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