Я использую пакет совместимости v4 в своем проекте, и у меня возникла проблема с сохранением фрагмента
после он удален из поля зрения. У меня есть 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();
}
Фрагмент меню
требует, чтобы данные были загружены, прежде чем его можно будет отобразить, поэтому я показываю счетчик загрузки. Как только он загружается в первый раз, я хочу, чтобы его никогда не загружали второй раз, если только действие
не завершено.
Когда я вызываю showMenuFragment (...)
, я пытаюсь передать фрагмент
, используя FragmentManager.findFragmentByTag (String tag)
, но всегда ] null
, поэтому мне приходится создавать новый Фрагмент
каждый раз, когда я хочу показать другое меню.
У меня вопрос: как сохранить эти Fragment
после того, как они будут заменены другими меню? Я хочу избежать сохранения вручную ссылок на фрагменты
, потому что при повороте устройства экземпляр моего класса Activity
уничтожается, и я потеряю эти ссылки.
РЕДАКТИРОВАТЬ: Чтобы выразиться проще, я хочу, чтобы FragmentManager
отслеживал предыдущие Fragment
s, не добавляя их в задний стек. Я не хочу нажимать кнопку «Назад» и видеть предыдущее показанное меню.