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