Как получить список записей фрагмента backstack в android?
Я работаю над приложением, в котором вкладки реализованы с помощью FragmentActivity
. Поскольку во всех приложениях требуются закладки, фрагменты широко используются для обеспечения совместимости приложения со всеми версиями android.
Как следствие, я сталкиваюсь с проблемой визуализации того, какие фрагменты присутствуют в backstack. Я уверен, что существует способ получить список фрагментов, присутствующих в backstack. Спасибо.
Ответы
Ответ 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");
}
}
Это приведет к обновлению заголовка панели действий при прослушивании смены стека.