Я вызываю этот метод для перехода от 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());
}
и все еще, это входит в оператор else ... и я получаю исключение.
Понимаете, что я делаю не так, пожалуйста?
Thx.