2013-02-20 16 views
43

मेरे पास एक गतिविधि ए है, जो खंड बीएफ कहलाता है, जो खंड सीएफ कहते हैं। मैं चाहता हूं कि बीएफ को बैकस्टैक में रखा जाए जब सीएफ को बुलाया जाए ताकि उपयोगकर्ता इसे वापस नेविगेट कर सकें। हालांकि, अगर सीएफ में एक विशिष्ट बटन दबाया जाता है, तो मैं बैकस्टैक से बीएफ को हटाना चाहता हूं। क्या यह संभव है?बैकस्टैक से खंड को कैसे पॉप करें

मुझे लगता है कि एक पॉपबैकस्टैक() फ़ंक्शन है। हालांकि, मैं थोड़ा उलझन में हूं कि यह कैसे काम करेगा। क्या इस समारोह का उपयोग करना सुरक्षित है? क्या कोई संभावना है कि बैकस्टैक पर बीएफ के बाद एक अलग एप्लिकेशन से एक गतिविधि डाली जाएगी?

इसके अलावा, क्या बैकस्टैक पर सहेजे गए सहेजे गए इन्स्टेंसस्टेट को बदलने का कोई तरीका है?

मैं सिर्फ यह नहीं समझ सकता कि एमुलेटर का उपयोग करके बैकस्टैक पर एक मजबूत परीक्षण कैसे करें।

+0

से बचें! यह वास्तव में समग्र दक्षता में मदद नहीं करता है! सादा प्रतिस्थापन() का उपयोग करें या हर बार जब आप नेविगेट करना चाहते हैं तो बेहतर निकालें/जोड़ें! Http://stackoverflow.com/questions/5802141/is-this-the-right-way-to-clean-up-fragment-back-stack-when-leaving-a-deeply-nest/26093368# पर मेरी पोस्ट देखें 260 9 3368 –

+0

@stack_ved एक अच्छा विचार नहीं है। बैकस्टैक एक अच्छी बात है। बीटीडब्ल्यू मैं आपकी पोस्ट नहीं देख सकता। मुझे लगता है कि यह downvoted था। : पी – Sufian

उत्तर

86

आप नाम से टुकड़े को पॉप कर सकते हैं। बैक स्टैक में टुकड़े जोड़ते समय, बस उन्हें एक नाम दें।

fragmentTransaction.addToBackStack("fragB"); 
fragmentTransaction.addToBackStack("fragC"); 

फिर Fragment_C में, नाम यानी .. fragB का उपयोग कर वापस ढेर पॉप और शामिल वापस ढेर का उपयोग कर POP_BACK_STACK_INCLUSIVE

someButtonInC.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     FragmentManager fm = getActivity() 
       .getSupportFragmentManager(); 
     fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    } 
}); 
+9

यह काम करेगा भले ही हम fm.popBackStack विधि में कोई पैरामीटर पास न करें। fm.popBackStack(); – Kailas

+0

क्या होगा अगर मैं इसे वापस बटन बटन पर बनाना चाहता हूं? – Akshay

+0

@Akki यदि आप बैकस्टैक में जोड़ रहे हैं तो यह पहले से ही आखिरी खंड को पॉप करेगा जब आप वापस नेविगेशन आइटम दबाएंगे। इसलिए सामान्य नेविगेशन को वापस करने के लिए कोई अतिरिक्त कदम आवश्यक नहीं है। दबाए गए बैक बटन पर केवल ओवरराइड करने की आवश्यकता होती है जब आप एक सामान्य एक कदम पीछे नेविगेशन के अलावा कुछ और करना चाहते हैं। – ocross