Android: постоянный фрагмент освобождается?

У меня есть PersistFragment, который я использую для сохранения данных при поворотах экрана MainActivity, отображении других действий и т. Д. В большинстве случаев это работает идеально. Я могу отображать другие действия, нажимать кнопку "Назад", пока не вернусь к своей основной активности и т. Д., И все работает нормально.

У меня есть кнопка на всех этих дочерних действиях для прямого перехода к MainActivity, и когда я использую это, PersistFragment воссоздается. Зачем? Какая разница? Как я могу остановить освобождение или потерю фрагмента PersistFragment?

Вот код (MainActivity, onCreate()), который создает PersistFragment:

super.onCreate( savedInstanceState );

FragmentManager fm = getFragmentManager();

PersistFragment persistFragment = (PersistFragment) fm.findFragmentByTag( TAG_PERSIST_FRAGMENT );

if( persistFragment == null )
{
  persistFragment = new PersistFragment();
  persistFragment.setRetainInstance( true );

  fm.beginTransaction().add( persistFragment, TAG_PERSIST_FRAGMENT ).commit();
  System.out.printf( "Created new Fragment!\n" );
}

А вот обработчик onClick, который возвращает меня к MainActivity:

public void onClick( View v )
{
  Intent intent = new Intent( TVActivity.this, MainActivity.class );
  intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
  startActivity( intent );  
}

Я вижу отладку "Создан новый фрагмент!" так что похоже, что PersistFragment как-то выпущен.

1 ответ

Попробуйте изменить persistFragment на saveInstanceState в операторе if

Другие вопросы по тегам