2014-11-02 3 views
8

के रूप में एंड्रॉयड वापसी वस्तु यह बच्चे गतिविधि से माता-पिता के लिए एक गतिविधि परिणाम के रूप में वस्तु वापस जाने के लिए संभव है? वैसे ही जैसे कुछ:एक गतिविधि परिणाम

Intent resultIntent = new Intent(null); 
resultIntent.putExtra("STRING_GOES_HERE", myObject); 
setResult(resultIntent); 
finish(); 

यदि यह संभव है, मैं कैसे माता पिता गतिविधि में myObject पुनः प्राप्त करना चाहिए?

मैं पता लगा, कि डेटा मैं कुछ इस तरह करने की जरूरत है पुनः प्राप्त करने के: ....

protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
    if(requestCode == REQ_CODE_CHILD) { 
     MyClass myObject = data.getExtra("STRING_GOES_HERE"); 
    } 
} 

बात है कि मैं त्रुटि मिलती है, कि विधि 'getExtra' का समाधान नहीं कर

+0

जावा क्रमबद्धता के बारे में पढ़ें। – Simon

+0

हममम ... समस्या ... –

उत्तर

12

आप एक ऑब्जेक्ट प्रदान नहीं कर सकते, लेकिन आप (बशर्ते कि वे आदिम प्रकार, Serializable या Parcelable कर रहे हैं) एक उद्देश्य है कि आपकी वस्तुओं युक्त लौट सकते हैं। में

public final static int REQ_CODE_CHILD = 1; 

... 
Intent child = new Intent(getPackageName(), "com.something.myapp.ChildActivity"); 
startActivityForResult(child, REQ_CODE_CHILD); 

और उसके बाद:

int resultCode = ...; 
Intent resultIntent = new Intent(null); 
resultIntent.putExtra("STRING_GOES_HERE", myObject); 
setResult(resultCode, resultIntent); 
finish(); 

अपने माता पिता गतिविधि में आप startActivityForResult के साथ बच्चे गतिविधि शुरू करने के लिए की आवश्यकता होगी:

अपने बच्चे गतिविधि में, कोड की तरह कुछ हो जाएगा onActivityResult, आपके पास होगा:

protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
    if(requestCode == REQ_CODE_CHILD) { 
     MyClass myObject = data.getExtras().getSerializable("STRING_GOES_HERE"); 
    } 

    ... 
} 

आप एक पढ़ सकते हैं Activity javadoc page पर विधियों को झुकाएं।

+0

विधि को हल Canot 'getExtra' है कि 'startActivityForResult (आशय, पूर्णांक)' मैं बजाय वस्तु पूर्णांक पहली बार में पारित नहीं हो सकता है? क्यूं कर? –

+0

क्षमा करें, सीधे नहीं सोचा था। आपको बंडल और फिर अतिरिक्त अतिरिक्त पुनर्प्राप्त करने की आवश्यकता है। मैंने अपना उत्तर अपडेट किया (धारणा के आधार पर कि आपका ऑब्जेक्ट सीरियलज़ेबल है) –

+0

आपके 'माइक्लास' वर्ग को काम करने के लिए 'सीरियलज़ेबल लागू करने' की आवश्यकता है। – Zapnologica

3

this answer देखें, जो बताता है कि startActivityForResult और onActivityResult का उपयोग कैसे करें।

यह वही प्रक्रिया किसी भी ऑब्जेक्ट के लिए उपयोग की जा सकती है जो Serializable या Parcelable है। इस प्रकार, यदि myObject आपके द्वारा बनाई गई एक कस्टम क्लास है, तो आपको इन इंटरफेस में से किसी एक को कार्यान्वित करने की आवश्यकता होगी।

-1

आप setResult (int) का उपयोग कर सकते android activity reference पढ़ा है, विशेष रूप से गतिविधियों शुरू करने और परिणाम प्राप्त करने।

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