5

मैं इस विधि कॉल 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।

उत्तर

4

क्या आपने किसी अन्य विधि का उपयोग करने की कोशिश की है, जैसे निकालें(), फिर एक ऐड() करें। या कुछ भी समान है? मैंने कुछ अन्य पोस्ट पर देखा कि प्रतिस्थापन() विधि हमेशा सही तरीके से व्यवहार नहीं करती है।

+0

हां, इस सवाल का जवाब और अन्य पोस्ट आप के बारे में बात कर रहे हैं, मेरा साथी xD http://stackoverflow.com/questions/6250580/fragment-already-added-illegalstateexception Thx वैसे भी –

+0

मैं यह सुनने के लिए खुश हूँ कर रहे हैं मैं बस सोच रहा था कि त्रुटि हमेशा मेरे कोड के साथ थी। स्पष्ट करने के लिए आपको धन्यवाद। –

संबंधित मुद्दे