दिलचस्प पोस्ट
एंड्रॉइड 2.2 मीडियाप्लेयर एक SHOUTcast यूआरएल के साथ ठीक काम कर रहा है, लेकिन दूसरे के साथ नहीं जब UIViewController दृश्य को बुलाया जाता है? ऐसे फाइल को लोड नहीं कर सकता – rvm pkg install zlib का उपयोग करने के बाद भी zlib `स्ट्रिंग 'बहुत अधिक प्रकार तर्कों पर लागू होता है सभी उपलब्ध matplotlib बैकएंड्स की सूची क्यों glReadPixels () आईओएस 6.0 में इस कोड में असफल रहे हैं? चेकआउट्स का उपयोग किए बिना गीट की शाखाओं को मिलाएं, अपडेट करें और खींचें शाखाओं की रणनीतियाँ जब आप thread.start () के बजाय java के thread.run () को कॉल करेंगे? Android HTTP POST में मापदंड कैसे जोड़ें? मैं डेल्फी में कमांड लाइन प्रोग्राम कैसे चलाऊँ? 1053 त्रुटि: सेवा ने प्रारंभिक नियंत्रण में समय या नियंत्रण अनुरोध पर प्रतिक्रिया नहीं दी जावास्क्रिप्ट इफ्रेम इंटीरियर एचटीएमएल सूची में 2 की शक्तियां पाएं Prolog जावास्क्रिप्ट पृष्ठभूमि में एजेएक्स प्रतिक्रियाओं को कैसे संभालता है?

एंड्रॉइड – सेट टुकड़ा आईडी

मैं एक Fragment Id कैसे सेट कर सकता हूं ताकि मैं getSupportFragmentManager().findFragmentById(R.id.--) उपयोग कर getSupportFragmentManager().findFragmentById(R.id.--) ?

Solutions Collecting From Web of "एंड्रॉइड – सेट टुकड़ा आईडी"

आप एक टुकड़ा आईडी प्रोग्राम प्रोग्राम रूप से सेट नहीं कर सकते

हालांकि, एक String tag जिसे आप फ्रैग्मेंट ट्रान्ससेक्शन के अंदर सेट कर सकते हैं, जिसे एक टुकड़ा को विशिष्ट रूप से पहचानने के लिए उपयोग किया जा सकता है

जैसे अलेक्सी ने बताया, आप FragmentTransaction के add(int, Fragment) विधि को एक आईडी पास कर सकते हैं। हालांकि, यह एक टुकड़ा के लिए आईडी निर्दिष्ट नहीं करता है। यह Fragment को सम्मिलित करने के लिए एक ViewGroup की आईडी को निर्दिष्ट करता है ऐसा उद्देश्य के लिए उपयोगी नहीं है जो मुझे आपकी अपेक्षा है, क्योंकि यह Fragment विशिष्ट पहचान नहीं करता है, लेकिन ViewGroup एस। ये आईडी कंटेनरों के हैं जो गतिशील रूप से एक या अधिक टुकड़े जोड़ सकते हैं। Fragment पहचान करने के लिए इस तरह की विधि का उपयोग करने से आपको ViewGroup गतिशील रूप से प्रत्येक Fragment डालने के लिए लेआउट में जोड़ना होगा। यह बहुत बोझिल होगा

इसलिए यदि आपका सवाल है कि एक टुकड़ा के लिए एक अद्वितीय पहचानकर्ता बनाने के लिए जो आप गतिशील जोड़ रहे हैं, तो इसका उत्तर FragmentManager ट्रान्ससेक्शन के ऐड (इंटी कंटेनर वीआईआईआईडी , टुकड़ा टुकड़ा, स्ट्रिंग टैग) विधि और FragmentManager मैनेजर की खोजफ्रेग्मेंटबिटाट (स्ट्रिंग) पद्धति का उपयोग करना है।

मेरे एक ऐप्स में, मुझे गतिशील रूप से तार उत्पन्न करने के लिए मजबूर किया गया था लेकिन वास्तविक खगोल व्यवहार के मामले में यह महंगा नहीं है, वैसे भी।

टैग पद्धति का एक अन्य लाभ यह है कि यह एक टुकड़ा की पहचान कर सकता है जिसे UI पर जोड़ा नहीं जा रहा है। FragmentTransaction के जोड़ (टुकड़ा, स्ट्रिंग) विधि देखें। Fragment को View आवश्यकता नहीं है! वे रूपांतरण परिवर्तनों के बीच अल्पकालिक राज्य को जारी रखने के लिए भी उपयोग किए जा सकते हैं!

बाहर निकलता है आपको टुकड़ा आईडी को जानने की आवश्यकता नहीं हो सकती है

डॉक्स से:

 public abstract Fragment findFragmentById (int id) Finds a fragment that was identified by the given id either when inflated from XML or as the container ID when added in a transaction. 

महत्वपूर्ण हिस्सा "एक लेनदेन में जोड़ा जाने पर कंटेनर आईडी के रूप में" है

इसलिए:

 getSupportFragmentManager() .beginTransaction() .add(R.id.fragment_holder, new AwesomeFragment()) .commit(); 

और फिर

 AwesomeFragment awesome = (AwesomeFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_holder); 

आप जो कुछ भी (भयानक) टुकड़ा आर.आईडी.फ्रैगमेंट_होल्डर में आयोजित करेंगे

ज्यादातर मामलों में आप टुकड़ा टैग के साथ ही आईडी का उपयोग कर सकते हैं।
आप FragmentTransaction.add(Fragment fragment, String tag ); में टैग मान सेट कर सकते हैं FragmentTransaction.add(Fragment fragment, String tag ); । तब आप प्रश्न में खंड को खोजने के लिए FragmentManager.findFragmentByTag(String tab) का उपयोग कर सकते हैं।

जैसा कि टॉम और अन्य लोग पहले ही उल्लेख करते हैं, पहचान के लिए उस टैग का उपयोग करने के लिए एक टुकड़े पर एक टैग डालने के तरीके हैं। उन समाधानों के साथ आने वाली एक बड़ी समस्या यह है कि टुकड़े को तब तक टैग नहीं मिलता जब तक कि गतिविधि (या, वास्तव में, FragmentManager ) से जुड़ा हो। अगर किसी को टैग किए जाने से पहले एक टुकड़ा की पहचान करने की आवश्यकता हो तो क्या करें?

मेरे समाधान अब तक दुनिया में सबसे पुराना (जावा) चाल पर निर्भर हैं: एक न्यूनतम टेम्पलेट टुकड़ा बनाते हैं जो इसे किसी एक के निर्माता के रूप में आईडी लेता है और एक आईडी प्राप्त करता है जो कि getFragmentId() विधि प्रदान करता है। मैं फिर उन टुकड़ों को शुरुआती पहचान की आवश्यकता है जो टेम्पलेट का विस्तार और; देखा! समस्या सुलझ गयी।

दुर्भाग्यवश, इस समाधान के लिए, प्रत्येक टुकड़ा प्रकार, ListFragment , DialogFragment या सादे पुराने Fragment (पीओएफओ?!) के लिए टेम्पलेट टुकड़े का एक सेट की आवश्यकता होती है, DialogFragment प्रारंभिक पहचान की आवश्यकता होती है। लेकिन उपलब्ध कराए गए लाभों पर विचार करते हुए मुझे लगता है कि टुकड़ों के मामले में यह प्रबंधनीय है

उपचार घावों को फाड़ देने के लिए क्षमा करें 🙂

चीयर्स!

निम्न का उपयोग करें:

एक टुकड़ा जोड़ने के लिए:

 getFragmentManager().beginTransaction().add(R.id.fragment_container, fragmentToBeAdded, tag).commit(); 

मौजूदा टुकड़ा की पहचान करने के लिए:

 getFragmentManager().findFragmentByTag(fragmentName); 

टॉम के उत्तर के अलावा, विधि को बदलने के अलावा विधि जोड़ने के अलावा, टुकड़ा टैग का भी समर्थन करता है।