Я использую пакет совместимости v4 в своем проекте, и у меня возникла проблема с сохранением Fragment
после его удаления из поля зрения. У меня Activity
отображаются 2 фрагмента ... рамка меню слева, панель контента справа. Кадр меню имеет 3 различных меню (фрагмента), которые могут отображаться.
Вот как я заменяю Фрагмент меню:
public void showMenuFragment( Fragment fragment, String tag ) {
showFragment( R.id.menu_frame, fragment, tag, false);
setLastMenuPushed( tag );
}
protected void showFragment( int resId, Fragment fragment, String tag, boolean addToBackStack ) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
if ( fragmentManager.findFragmentByTag( tag ) != null && fragment.isAdded() ) {
transaction.remove( fragment );
}
transaction.replace( resId, fragment, tag ).setTransition( FragmentTransaction.TRANSIT_FRAGMENT_OPEN ).setBreadCrumbShortTitle( tag );
if ( addToBackStack ) {
transaction.addToBackStack( tag );
}
transaction.commit();
}
Меню Fragment
s требует загрузки данных, прежде чем их можно будет отобразить, поэтому я показываю загрузочный счетчик. Как только он будет загружен в первый раз, я не хочу загружать его во второй раз, пока не закончится Activity
.
Когда я звоню showMenuFragment(...)
, я пытаюсь передать Fragment
, используя FragmentManager.findFragmentByTag(String tag)
, но это всегда null
, поэтому мне приходится делать новый Fragment
каждый раз, когда я хочу показать другое меню.
Мой вопрос: как мне сохранить эти Fragment
после того, как они будут заменены другими меню? Я хочу не сохранять ручные ссылки на Fragment
s, поскольку при повороте устройства экземпляр моего класса Activity
уничтожается, и я теряю эти ссылки.
EDIT: проще говоря, я хочу, чтобы FragmentManager
отслеживал предыдущие Fragment
s, не добавляя их в задний стек. Я не хочу нажимать кнопку «Назад» и видеть предыдущее меню.