दिलचस्प पोस्ट
प्रतिबिंब के माध्यम से मैं निजी तरीकों और निजी डेटा सदस्यों का कैसे उपयोग कर सकता हूं? 3 डी सीएसएस ट्रांसफ़ॉर्म, फ़ायरफ़ॉक्स में दांतेदार किनारों PHP में एक साथ दो स्ट्रिंग को कैसे जोड़ूँ? कैसे रनटाइम में WPF छवि को लोड करने के लिए? "तुलना विधि इसके सामान्य अनुबंध का उल्लंघन करती है!" पूर्णांकों के अनुक्रम के लिए सर्वश्रेष्ठ संपीड़न एल्गोरिथ्म Django: "प्रोजेक्ट्स" बनाम "ऐप्स" रेगेक्स ईमेल सत्यापन प्रारूप समयक्षेत्र 24 घंटे से अधिक है Android LocationManager.getLastKnownLocation () रिक्त देता है त्रुटि जब Xcode 5.0 और Rcpp के साथ (कमांड लाइन उपकरण स्थापित हैं) कन्वर्ट दिनांकटाइम को जूलियन दिनांक में सी # (सुरक्षित करने के लिए?) एचटीएमएल में स्थिति तय हैडर C99 इनलाइन फ़ंक्शन में .c फ़ाइल है पृष्ठभूमि छवि के साथ JTextArea के लिए आंतरिक पैडिंग

दूसरे टुकड़े से पहले टुकड़ा तक परिणाम कैसे पारित करें

मेरे ऐप में मेरे पास दो टुकड़े हैं जो कहते हैं टुकड़ा और फ्रैग्मेंटब । जब मैं fragmetA में एक बटन पर क्लिक करता हूं , तो एक सूची fragmentB में खुलती है। अब जब मैं fragmentB में सूची से एक आइटम का चयन करता हूँ तो मैं चाहता हूं कि परिणाम को fragmentA को पारित किया जाए। मैं सभी टुकड़ों के लिए केवल एक टैबएक्टिविटी का उपयोग कर रहा हूं जब सूची आइटम को fragmentB में चुना जाता है, तो मैं खण्ड से बाहर खड़ा हो रहा हूँ ताकि मैं सीधे खण्ड पर वापस जा सकूं

क्या किसी को पता है कि पिछला टुकड़ा को कैसे पारित करना है।

धन्यवाद।

Solutions Collecting From Web of "दूसरे टुकड़े से पहले टुकड़ा तक परिणाम कैसे पारित करें"

अद्यतन करें

गतिविधि माता-पिता नियंत्रक है और उन टुकड़ों / विचारों से उठाए गए घटनाओं को संभालने के लिए ज़िम्मेदारी लेनी चाहिए, जो कि टुकड़े के दायरे के बाहर कुछ चीज से संबंधित है / खुद को देखें

एक टुकड़ा यह मेजबान के विचारों के उप-नियंत्रक के रूप में कार्य करना है। अपने स्वयं के विचारों के बीच सभी घटनाओं और संचार, टुकड़ा खुद को संभालना चाहिए जब एक टुकड़ा के दायरे और जिम्मेदारियों (जैसे किसी दूसरे टुकड़े को डेटा भेजने) के बाहर एक घटना होती है, तो उस घटना को उसके मूल नियंत्रक, गतिविधि को बढ़ाया जाना चाहिए

पुराना

इस ट्यूटोरियल से: http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity

यह बेहतर है कि गतिविधि को टुकड़ों के बीच सीधे मूल्यों को पारित करने के बजाय अपने टुकड़े में परिवर्तन लागू हो। अपनी गतिविधि को onQuery(Bundle data) और onResult(Bundle data) विधियों के साथ एक FragmentListener onQuery(Bundle data) इंटरफ़ेस लागू करें

अपने प्रत्येक टुकड़ों में एक FragmentListener बनायें और फिर प्रत्येक टुकड़े की onAttach() को ओवरराइड करें:

  public void onAttach(Activity activity) { super.onAttach(activity); //---register parent activity for events--- try{ fragmentListener = (FragmentListener) activity; }catch (ClassCastException e) { throw new ClassCastException("Parent activity must implement interface FragmentListener."); } } 

यह आपके बच्चे के टुकड़े को पैरेंट गतिविधि पर स्वचालित रूप से पंजीकृत होने के लिए लागू करेगा।

साथ ही, onDetach() fragmentListener onDetach() रेफरेंस को रिलीज़ करना याद रखें।

अब आप टुकड़ों से अपनी गतिविधि को कॉल कर सकते हैं।

दूसरी तरफ, आपका गतिविधि हमेशा getFragmentManager().findFragmentByTag("fragmentA") का उपयोग करके किसी टुकड़े को खोज सकता है getFragmentManager().findFragmentByTag("fragmentA") या findFragmentById("FragmentA") getFragmentManager().findFragmentByTag("fragmentA") findFragmentById("FragmentA") । यदि यह आपका टुकड़ा मिल सकता है, तो यह आपके FragmentA कक्षा में डाल सकता है और इसके तरीकों को बुला सकता है। FragmentB या किसी अन्य टुकड़े के साथ भी ऐसा किया जा सकता है ..

संभावित समाधानों में से एक:

 public class DetachableResultReceiver extends ResultReceiver { private Receiver mReceiver; public DetachableResultReceiver(Handler handler) { super(handler); } public void clearReceiver() { mReceiver = null; } public void setReceiver(Receiver receiver) { mReceiver = receiver; } public interface Receiver { public void onReceiveResult(int resultCode, Bundle resultData); } @Override protected void onReceiveResult(int resultCode, Bundle resultData) { if (mReceiver != null) { mReceiver.onReceiveResult(resultCode, resultData); } } } 

पहला टुकड़ा DetachableResultReceiver.Receiver लागू करता है और DetachableResultReceiver वस्तु बनाता है:

 mReceiver = new DetachableResultReceiver(new Handler()); mReceiver.setReceiver(this); 

तो आप इसे दूसरे खंड तर्कों के पास कर सकते हैं:

 Bundle bundle = new Bundle(); bundle.putParcelable(Consts.EXTRA_RECEIVER, receiver); fragment.setArguments(bundle); 

और इसे दूसरे खंड में उपयोग करें:

 receiver = getArguments().getParcelable(Consts.EXTRA_RECEIVER); receiver.send(Consts.SOME_MESSAGE, someData); 

खंड में बी.जावा ने मुख्य क्लास में एक विधि को चलाने के लिए एक OnClickListener सेट किया है। FragmentB.java में मुख्य वर्ग में एक बहस दर्ज करें जो कि चर है, और इसे अपने मुख्य वर्ग में शेष संभाल लें। हालांकि टुकड़े वास्तव में सभी गतिविधियों पर निर्भर नहीं होना चाहिए। टुकड़े कहीं भी प्लग और खेलने के लिए किए गए थे

यह उदाहरण EditTextListener दिखाता है:

myAwesomeActivity.java

fragmentA.java

fragmentB.java

fragmentB.java:

 @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); int x = 3; EditText ed1 = (EditText) getView().findViewById(R.id.editText1); ed1.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEvent.ACTION_UP == event.getAction()) { ((myAwesomeActivity) getActivity()).myMethod(x); } return false; } }); } 

myAwesomeActivity.java:

 publiv void myMethod (int x){ //Do whatever you want with variable } 

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

आप कुछ स्ट्रिंग सहेजने के लिए SharedPreferences का उपयोग भी कर सकते हैं और पहले खंड के वापस लौटने के बाद इसे और स्पष्ट कर सकते हैं।