Сохранение и восстановление состояния фрагментов
Имеется 5 фрагментов со своей разметкой, отображаются они в FrameView. Каждый фрагмент может быть создан несколько раз, соответственно данные в них будут разные. Требуется, чтобы приложение умело сохранять состояние каждого фрагмента, чтобы имелась возможность переключаться между ними в любом направлении, т.е. условно образовался стек из 8 фрагментов, нужно иметь возможность переключится, например, с 7-го на 2-й, что-то в нем поменять и вернуться обратно.
Сейчас делаю так:
if (getSupportFragmentManager().findFragmentByTag(String.valueOf(idQuestion)) != null){
fragmentManager = getSupportFragmentManager();
fragment = fragmentManager.findFragmentByTag(String.valueOf(idQuestion));
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frameFragment, fragment).commit();
}
else {
switch (typeQuestion){
case 0:
fragment = new FragmentTestOneType();
break;
case 1:
fragment = new FragmentTestTwoType();
break;
case 2:
fragment = new FragmentTestThreeType();
break;
case 3:
fragment = new FragmentTestFourType();
break;
case 4:
fragment = new FragmentTestFiveType();
break;
case 5:
Intent intent = new Intent(getBaseContext(), FormTotalTest.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
break;
default:
fragment = new FragmentCheckTest();
break;
}
if (fragment != null) {
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.frameFragment, fragment, String.valueOf(idQuestion));
fragmentTransaction.commit();
}
Но программа падает с такой ошибкой:
java.lang.IllegalStateException: Fragment already added: FragmentTestTwoType{41fe8ab8 #1 id=0x7f0a0051 1}
Насколько я понимаю, фрагмент FragmentTestTwoType
уже добавлен.
Существует ли способ, как можно грамотно организовать переходы между фрагментами?