it-swarm.com.ru

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

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

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

38
Harshal Kshatriya

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

getBackStackEntryCount ()

getBackStackEntryAt (int index)

FragmentManager fm = getFragmentManager();

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

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

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

0
Harsh Mittal