Я вызываю этот метод для перехода от AFrag к BFrag:
showFragment()
{
FragmentTransaction fragmentTransaction = mFragmentMgr.beginTransaction();
// Add fragment to the container ContentView
fragmentTransaction.replace(R.id.operation_fragments_frame, mBFrag, mBFrag.getTag());
// Add FADE effect
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
// Keep the transaction in the back stack so it will be reversed when backbutton is pressed
fragmentTransaction.addToBackStack(null);
// Commit transaction
fragmentTransaction.commit();
}
Он показывает новый фрагмент (BFrag), заменяет предыдущий (AFrag) и сохраняет информацию о транзакции , поэтому его можно автоматически отменить / отменить при нажатой кнопке возврата.
При нажатии кнопки возврата все выглядит нормально, отображается предыдущий фрагмент (AFrag). Но когда я снова иду вперед (AFrag -> BFrag), я получаю «Исключение" Фрагмент уже добавлен ".
Разве операция обратного / отмененного действия не удалила новый фрагмент (BFrag)? Это ожидаемое поведение?
Это странно, потому что после этого я решил установить проверку:
if(mBFrag.isAdded())
{
fragmentTransaction.show(mBFrag);
}
else
{
fragmentTransaction.replace(R.id.operation_fragments_frame, mBFrag, mBFrag.getTag());
}
и все еще, он попадает в другой оператор ... и я получаю исключение.
Пожалуйста, поймите, что я делаю не так?
Thx.