5
我把這種方法從AFrag往前走BFrag:片段的行爲:FragmentTransaction ::代替()和反向堆棧中操作
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。
沒錯,答案和你所談論的其他職位是我哥們的xD http://stackoverflow.com/questions/6250580/fragment-already-added-illegalstateexception THX反正 – 2011-06-10 08:13:11
我很高興聽到這一點,我只是想知道錯誤與我的代碼一如既往。謝謝你澄清。 – 2017-08-02 17:02:31