このメソッドを呼び出して、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ステートメントに入ります...そして例外が発生します。
私が間違っていることについて何か洞察をお願いします。
どうも。