2012-08-18 16 views
28

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

परिणामस्वरूप, मुझे बैकस्टैक पर कौन से टुकड़े मौजूद हैं, इस बारे में कल्पना करने में समस्या का सामना करना पड़ रहा है। मुझे यकीन है कि बैकस्टैक पर मौजूद टुकड़ों की सूची पुनर्प्राप्त करने के लिए तरीका है। धन्यवाद।

उत्तर

73

FragmentManager तरीकों है:

getBackStackEntryCount()

getBackStackEntryAt (पूर्णांक सूचकांक)

FragmentManager fm = getFragmentManager(); 

for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){ 
    Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId()); 
} 
+3

getId बैकस्टैक की आईडी लौटाता है –

+0

डाउनवोट क्योंकि यह गलत है। यदि आप 'findFragmentById()' निष्पादित करते हैं और इन आईडी का उपयोग करते हैं, तो आपको एक टुकड़ा नहीं मिलेगा। – Bevor

0

आप की जाँच करने के किस अंश दिख रहा है चाहते हैं और यदि आप जानते हैं, तो दृष्टि का आईडी जहां टुकड़ा रखा गया है, सबसे पहले आपको नीचे क्रेट()

में जोड़ना होगा
getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() { 

    @Override 
    public void onBackStackChanged() { 
    Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame); 
    if (f != null){ 
     updateActionBarTitle(f); 
    } 

    } 
}); 

private void updateActionBarTitle(Fragment fragment) { 
     String fragClassName = fragment.getClass().getName(); 

     if (fragClassName.equals(FirstFragment.class.getName())) { 
      setTitle("Home"); 
     } else if (fragClassName.equals(SecondFragment.class.getName())) { 
      setTitle("Second"); 
     } 
    } 

यह बैक स्टैक चेंज श्रोता पर आपके एक्शन बार शीर्षक को अपडेट करेगा।

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