2013-02-05 32 views
7

मैं टुकड़े सीख रहा हूं लेकिन मैं इस बात को समझने में असफल रहा हूं कि टुकड़ों को कंटेनर की आवश्यकता क्यों है।एंड्रॉइड के लिए Fragments में कंटेनर का उद्देश्य

तरह से मैं टुकड़े को समझने के काम इस प्रकार है:

  1. FragmentActivity setContentview एक xml फ़ाइल जो को परिभाषित करता है जहां टुकड़े स्थित होगा को दर्शाता है।

  2. FragmentActivity तो कंटेनर के लिए टुकड़ा प्रदान करती है टुकड़े

  3. के कहने पैदा करता है।

  4. FragmentManager फिर उन्हें प्रदर्शित करता है।

  5. वास्तविक टुकड़ा वर्ग तब लेआउट को बढ़ाता है, और यह यह लेआउट है जो में सभी एप्लिकेशन UI घटक शामिल हैं।

(अगर मुझे यहां कुछ याद आती है तो कृपया मुझे सही करें क्योंकि मैं केवल इस समय सीख रहा हूं)।

तो कंटेनर का उद्देश्य क्यों है, मुझे उन सभी उदाहरणों में क्यों आवश्यकता है क्योंकि मैंने देखा है कि यह सिर्फ एक खाली रिश्तेदार लेआउट xml दस्तावेज़ है।

क्या विभिन्न टुकड़े समान कंटेनर साझा कर सकते हैं (क्योंकि यह केवल एक सापेक्ष लेटआउट xml फ़ाइल है)?

गूगल http://developer.android.com/training/basics/fragments/creating.html

द्वारा प्रदान की वे एक ListFragment है और जब आइटम कॉलबैक इंटरफ़ेस के उपयोग के माध्यम से चयन किया जाता है हम अंततः वापस कोड की इस पंक्ति को पाने के उदाहरण में

तो:

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack so the user can navigate back 
transaction.replace(R.id.fragment_container, newFragment); 

मेरे अन्य सवाल यह है:

1) कोड की यह पंक्ति लेख खंड के साथ ListFragment (बाएं तरफ टुकड़े) को प्रतिस्थापित क्यों नहीं करती है। जब से इसे प्रारंभ किया गया था, तब से हम देखते हैं:

getSupportFragmentManager().beginTransaction() 
        .add(R.id.fragment_container, firstFragment).commit(); 

इसके बजाय ... सूचीफलकमेंट बाईं ओर बनी हुई है और सही टुकड़ा अद्यतन किया गया है। लेकिन कंटेनर fragment_container पहले से संबंधित है फ्रैगमेंट यह सूचीफ्रेगमेंट है। और यह वह नहीं है जो अद्यतन हो जाता है।

क्या आप देखते हैं कि मेरे पास सवाल क्यों है? यह ट्यूटोरियल में समझाया नहीं गया है।

उत्तर

3

यहाँ: http://marakana.com/s/post/1250/android_fragments_tutorial

और यहाँ: http://developer.android.com/guide/components/fragments.html

इस पढ़ें और सब स्पष्ट हो जाएगा :)

टुकड़ा गतिविधि के एक हिस्से को है और केवल एक गतिविधि के अंदर मौजूद कर सकते हैं। तो आपको एक विशेष प्रकार की गतिविधि की आवश्यकता है जो टुकड़े को संभाल सके - यह फ्रैगमेंट एक्टिविटी है।

टुकड़े टुकड़े बिना फ्रैगमेंट एक्टिविटी लगभग सामान्य गतिविधि की तरह है।लेकिन इसमें खंडों को जोड़ने (जोड़ने, हटाने, बदलने) के लिए एक FragmentManager है। जब आप एक FragmetnActivity में एक टुकड़ा जोड़ना चाहते हैं तो आपको यह निर्दिष्ट करना चाहिए कि इसे कहां रखा जाना चाहिए (क्योंकि खंड को पूर्णस्क्रीन होने की आवश्यकता नहीं है, जैसे Google Play- कई छोटे टुकड़े हैं)। तो यही कारण है कि आपको एक कंटेनर चाहिए।

क्या विभिन्न टुकड़े समान कंटेनर साझा कर सकते हैं (क्योंकि यह केवल एक सापेक्ष Layout xml फ़ाइल है)?

हाँ वे कर सकते हैं, आप एक ही कंटेनर के भीतर एक टुकड़े को दूसरे के साथ बदल सकते हैं।

+3

कथन "तो आपको एक विशेष प्रकार की गतिविधि की आवश्यकता है जो टुकड़े को संभाल सके - यह फ्रैगमेंट एक्टिविटी है।" एंड्रॉइड के पुराने संस्करणों के बारे में सच है और जब आप समर्थन पुस्तकालयों का उपयोग कर रहे हैं। वर्तमान संस्करण (जैसे एंड्रॉइड एपीआई 1 9) में, डिफ़ॉल्ट गतिविधि में पहले से ही खंड कार्यक्षमता है। जैसे getFragmentManager() फ़ंक्शन: http://developer.android.com/reference/android/app/Activity.html#getFragmentManager() – treesAreEverywhere

+0

कंटेनर में किसी विशेष खंड को कैसे प्रतिस्थापित करें जिसमें नए टुकड़े के साथ कई टुकड़े होते हैं? –

+0

टुकड़े को प्रतिस्थापित करना एक ही कंटेनर साझा करने वाले विभिन्न टुकड़ों के समान नहीं है। दो टुकड़े एक कंटेनर साझा नहीं कर सकते हैं अगर किसी को दूसरे द्वारा प्रतिस्थापित किया गया हो। – craned