मुझे अंत में पता चला कि एक टुकड़े में सेट टाउन का उपयोग कैसे करें और साझा करना चाहते हैं। जब आप टुकड़े से टुकड़े तक संवाद करना चाहते हैं तो यह काफी उपयोगी है।
यहां एक उदाहरण है: मान लें कि आप एक संवाद दिखाना चाहते हैं और जब यह बंद हो जाता है तो आप कुछ कार्रवाई करना चाहते हैं।
तो अपने fragment1 में
कि संवाद आप ऐसा कर सकता है का उपयोग करेगा:
myDialogFragment.setTargetFragment(fragment1, myDialogFragment.REQ_CODE);
और अपने टुकड़ा है कि संवाद आप इस तरह onActivityResults ओवरराइड करने के लिए की आवश्यकता होगी कहा जाता है में:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CoDDialogFragment.REQ_CODE)
exit(); //or whatever you want to do here
}
और myDialogFragment में आप यह कर सकते हैं:
TellTargetYouGotResults(REQ_CODE);
//...
private void TellTargetYouGotResults(int code) {
Fragment targetFragment = getTargetFragment(); // fragment1 in our case
if (targetFragment != null) {
targetFragment.onActivityResult(getTargetRequestCode(), code, null);
}
}
जहां REQ_CO डीई निश्चित रूप से कोई int हो सकता है। टुकड़े संचार के टुकड़े के लिए बहुत उपयोगी है। लेकिन मैं अभी भी ईवेंट बस को पसंद करता हूं क्योंकि कभी-कभी लक्ष्य को डेटा भेजने के बाद उसका विचार पहले से ही नष्ट हो चुका है (इसे एक टुकड़ा शामिल करें) और फिर यदि आप एक्टिविटी रिसेट में दृश्य को अपडेट करने का प्रयास करते हैं तो आपको एक क्रैश मिलेगा। इसलिए मैं केवल डेटा को पास करने के लिए उपयोगी कहूंगा लेकिन यूआई को अपडेट नहीं करता जबतक कि आपने 'एड' खंड लेनदेन नहीं किया है और प्रतिस्थापन नहीं है (जो दृश्य को नष्ट कर देता है लेकिन राज्य रखता है)।
http://stackoverflow.com/a/13733914/1093872 यहां एक और अच्छा उदाहरण है ... लेकिन इंटरफेस भी अच्छे हैं। –
धन्यवाद ... यह सिर्फ एक टुकड़े के लिए एक जगह धारक की तरह दिखता है। इसलिए यदि मेरे पास एक टुकड़ा है और मैं लक्ष्य निर्धारित करता हूं तो मैं खंड को पुनर्प्राप्त करने के लिए getTarget का उपयोग कर सकता हूं। यह विचारों पर setTag के समान है। – j2emanue
ब्रॉडकास्ट रिसीवर के बजाय, स्थानीय ब्रॉडकास्ट मैनेजर (यहां: http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html) का उपयोग करने पर विचार करें, या ईवेंट हैंडलिंग का अपना तंत्र बनाएं। –