2013-03-29 6 views
7

पर परिणाम प्राप्त करने के लिए मेरे पास कस्टम लिस्ट व्यू के साथ कई टुकड़े हैं। वे मेरे कस्टम ListAdapter का उपयोग करते हैं, जिसमें मैं सूची के तत्वों पर क्लिक संभालता हूं। मुझे इस ऑनक्लिक लिस्टनर से एक और गतिविधि शुरू करने की आवश्यकता है और कुछ जानकारी वापस फ्रैगमेंट पर प्राप्त करें। मैंएडाप्टर से एक्टिविटीफॉर रिसेट कैसे शुरू करें फ्रैगमेंट

Intent intent=new Intent(context, DataFillerActivity.class); 
((Activity) context).startActivityForResult(intent, 3); 

इस्तेमाल करने की कोशिश लेकिन DataFillerActivity रिटर्न MainActivity करने, टुकड़ा के लिए नहीं होता है। तो इस समस्या को हल करने का सबसे अच्छा तरीका क्या है? धन्यवाद

उत्तर

3

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

http://developer.android.com/training/basics/fragments/communicating.html

आप परिणाम के लिए एक acitivity शुरू करते हैं, परिणाम गतिविधि जो अनुरोध शुरू करने के लिए पारित हो जाएगा। अब आप डेटा को वांछित टुकड़े में पास कर सकते हैं।

2

सिर्फ अपने गतिविधि कक्षा में onActivityresult ओवरराइड और गतिविधि से परिणाम टुकड़ा गुजरती हैं, आप टुकड़ा या तो लेकिन अपने टैग आईडी

5

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

इसे हल करने के लिए, सुनिश्चित करें कि आपके ListAdapter में खंड का संदर्भ है और fragment.startActivityForResult() का उपयोग करें। फिर परिणाम खंड के onActivityResult() पर वापस आ जाएगा।

+0

कोशिश की लेकिन काम नहीं कर रहा है, यह सुनिश्चित नहीं है कि यह http://stackoverflow.com/questions/18271761/onactivityresult-gets-called-when-activity-starts-not-when-its-finished से संबंधित बग के कारण है। लेकिन अगर मैं अपने टुकड़े से एक और गतिविधि बुलाता हूं, तो यह काम करता है। केवल जब प्रारंभ एक्टिविटीफॉर रिसेट को खंड के लिस्ट व्यू के भीतर बुलाया जाता है, तो सक्रिय गतिविधि शुरू होने के बाद खंड की निष्क्रियता तुरंत ठीक कहलाती है। – teapeng

+0

मैंने intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK) को हटाने के बाद मेरी समस्या हल की; खंड को बुलाए जाने से पहले .startActivityForResult (इरादा, 0); आपके लिए +1 – teapeng

+0

मैं तुमसे प्यार करता हूँ एडमिन –

6

मुख्य गतिविधि में विधि onActivityResult बनाओ इस

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     //super.onActivityResult(requestCode, resultCode, data); 
     // Check if image is captured successfully 

     super.onActivityResult(requestCode, resultCode, data); 
     for (Fragment fragment : getSupportFragmentManager().getFragments()) { 
      fragment.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

की तरह यह अपने बच्चे को टुकड़ा करने के लिए परिणाम कोड पारित करेंगे।

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