मैं इस विधि कॉल BFrag को AFrag से आगे जाने के लिए:टुकड़े व्यवहार: FragmentTransaction :: की जगह() और रिवर्स backStack आपरेशन
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) मुझे "फ्रैगमेंट पहले ही अपवाद जोड़ा गया" मिला।
क्या रिवर्स/पूर्ववत ऑपरेशन नए खंड (बीएफआरएजी) को हटा नहीं था? क्या यह अपेक्षित व्यवहार है?
कि अजीब है, क्योंकि इस के बाद, मैं एक चेक स्थापित करने का फैसला:
if(mBFrag.isAdded())
{
fragmentTransaction.show(mBFrag);
}
else
{
fragmentTransaction.replace(R.id.operation_fragments_frame, mBFrag, mBFrag.getTag());
}
और चित्र, इसे किसी और बयान में हो जाता है ... और मैं अपवाद मिलता है।
मैं क्या गलत कर रहा हूं पर कोई अंतर्दृष्टि, कृपया?
Thx।
हां, इस सवाल का जवाब और अन्य पोस्ट आप के बारे में बात कर रहे हैं, मेरा साथी xD http://stackoverflow.com/questions/6250580/fragment-already-added-illegalstateexception Thx वैसे भी –
मैं यह सुनने के लिए खुश हूँ कर रहे हैं मैं बस सोच रहा था कि त्रुटि हमेशा मेरे कोड के साथ थी। स्पष्ट करने के लिए आपको धन्यवाद। –