5

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

प्रत्येक टैब का अपना Fragment मैं यह मूल रूप से अच्छा काम मिल गया (हर एक के SherlockListFragment एक उपवर्ग है) शामिल हैं, लेकिन मैं एक समस्या यह है कि मुझे यकीन है कि मूर्ख है कर रहा हूँ है, लेकिन मैं यह समझ नहीं अभी तक:

पहली बार प्रत्येक टुकड़ा दिखाया गया है, सब ठीक है, सूची आबादी है और इसलिए एक्शनबार में मेनू इटम्स।

लेकिन दूसरी बार जब आप एक टैब देखते हैं (swicth और switch-back के बाद), न तो सूची पॉप्युलेट हो जाती है, न ही एक्शनबार मेनू इटम्स।

@Override 
public void onTabSelected(Tab tab, FragmentTransaction transaction) { 
    SherlockListFragment toAttach = // Find the right fragment here... 

    if (toAttach != null) { 
     if (toAttach.isAdded() == false) { 
      transaction.add(R.id.tab_placeholder, toAttach, 
        REMINDER_FRAGMENT_TAG); 
     } else { 
      transaction.attach(toAttach); 
     } 
    } 
} 

और onTabUneselect मैं टुकड़ा अलग करने कर रहा हूँ:

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction transaction) { 
    SherlockListFragment toDetach = // Find the right fragment 
    if (toDetach != null) { 
     transaction.detach(toDetach); 
    } 
} 

मैं onResume में सूचियों और ActionBar मेनू को आबाद करने कर रहा हूँ

यह कैसे मैं टैब स्विचिंग कर रहा हूँ है:

@Override 
public void onResume() { 
    super.onResume(); 
    setHasOptionsMenu(true); 
    fillRemindersList(); 
} 

मैं भी onStart और onCreateView में यह कोशिश की, लेकिन यह मदद नहीं की ...

तो मैं यहां क्या खो रहा हूं? और यदि मेरे कोड में अन्य समस्याएं हैं जिन्हें मैं अनजान हूं, तो कृपया बताएं।

धन्यवाद!

संपादित करें:

मैं सिर्फ इस बात की पुष्टि onResume के बाद मैं टैब स्विच है, जो निश्चित रूप से गलत के बाद से मैं अलग करने रहा हूँ और उन्हें फिर से संलग्न है कहा जाता हो dosen't कि ... मैं स्विचन हूँ टैब गलत रास्ता?

उत्तर

2

onTabSelected में onTabUnselected में transaction.remove (टुकड़ा) और transaction.replace उपयोग करके देखें।

+0

धन्यवाद, मुझे उम्मीद है कि यह जवाब है, हालांकि यह अब प्रासंगिक नहीं है, क्योंकि मैंने सूची नेविगेशन में स्विच किया है। (मेरे मामले में और अधिक समझदारी करें, और पूरी तरह से काम करता है :)) –

+0

मेरे मामले में 'FragmentTranaction.remove (खंड # 1)' को खंड # 1 में कॉल करने से पहले 'FragmentTransaction.commit()' को कॉल करने से पहले मुझे खंड # 1 को मजबूर करने में मदद करता है को रोकें() ... onDestroyView() को चालू करने और क्रिएटिव्यू() ... ऑनर्यूज़() पर जाएं जब मैं खंड # 1 पर वापस लौटने पर वापस लौटता हूं। –

0

इस कोड के बाहर startTransaction() और प्रतिबद्ध() करना मुझे लगता है या आप भूल गए हैं? आप एक चाल के रूप में अच्छी नमूनों से यहां इस्तेमाल देख सकते हैं: https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabs.java

+0

न तो! जैसा कि आप देख सकते हैं कि मैं ActionBar.TabListener इंटरफ़ेस को कार्यान्वित कर रहा हूं। टैबलिस्टर कॉलबैक में आपको एक फ्रैगमेंट ट्रान्सएक्शन का उपयोग करने के लिए तैयार किया जाता है (वह है - "शुरुआती") और आप ** कॉल नहीं करते हैं ** दस्तावेज स्पष्ट रूप से कहता है। इसके अलावा, टुकड़ों को बदल दिया जा रहा है, इसलिए यह नहीं है ... –

+0

आह वास्तव में, इसके बारे में खेद है। –

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