KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I use this method on my container Activity to show a BFrag public void showBFrag() { // Start a new FragmentTransaction FragmentTransaction fragmentTransaction = mFragmentMgr.beginTransaction(); if(mBFrag.isAdded()) { Log.d(LOG_TAG, "Show() BFrag"); fragmentTransaction.show(mBFrag); } else { Log.d(LOG_TAG, "Replacing AFrag -> BFrag"); fragmentTransaction.replace(R.id.operation_fragments_frame, mBFrag); } // Keep the transaction in the back stack so it will be reversed when backbutton is pressed fragmentTransaction.addToBackStack(null); // Commit transaction fragmentTransaction.commit(); } I call it from my container Activity; for the first time: gets into the else statement and mBFrag replace mAFrag. Then I press the back button: and the operation is reversed (mAFrag is shown but.. does mBFrag is removed?). Then I go forward again by calling showBFrag() from the same Activity: and it gets AGAIN into the else statement. (so I can deduce that mBFrag is NOT ADDED) but I got a Fragment already added IllegalStateException ... (so why it didn't get into the if statement instead?) So: Why is the isAdded() method not returning TRUE if I'm getting a Fragment already added IllegalStateException ?? Does popBackStack operation completely remove previously added fragments? What behaviour am I misunderstanding? EDIT: Here is the complete info of the exception. 06-07 12:08:32.730: ERROR/AndroidRuntime(8576): java.lang.IllegalStateException: Fragment already added: BFrag{40b28158 id=0x7f0c0085} 06-07 12:08:32.730: ERROR/AndroidRuntime(8576): at android.app.BackStackRecord.doAddOp(BackStackRecord.java:322) 06-07 12:08:32.730: ERROR/AndroidRuntime(8576):
Tags (comma-separated)
Save Edits
Cancel