2013-03-10 3 views
6

मैं गतिविधि ए से गतिविधि बी को कॉल कर रहा हूं और इरादे का उपयोग कर कक्षा ऑब्जेक्ट पास कर रहा हूं।एंड्रॉइड - कॉलिंग गतिविधि पर डेटा वापस कैसे भेजें

Intent intentB = new Intent(v.getContext(), activityB.class); 
intentB.putExtra("data", data); //data is a class object 
startActivity(intentB); 

गतिविधि बी ठीक शुरू होता है और मैं डेटा निकालने में भी सक्षम हूं। गतिविधि बी में, मैं डेटा ऑब्जेक्ट को संशोधित कर रहा हूं। मैं गतिविधि संशोधित डेटा ऑब्जेक्ट को गतिविधि ए पर वापस भेजना चाहता हूं जब गतिविधि B.onDestroy() को कॉल किया जाता है।

कोई सलाह?

activityA, Intent शुरू करने:

Intent i = new Intent(this, activityB.class); 
i.putExtra("object", Class.object); 
startActivityForResult(i, 1); 

activityA, आशय को पकड़ने:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1) {  
     object = data.getParcelableExtra("object"); //the Class implements Parcelable 
    } 
} 

activityB

protected void onDestroy() { 
    Intent data = new Intent(); 
    setResult(RESULT_OK, data) 
    finish(); // ends current activity 
} 
+0

मैं ईमानदारी से लगता है कि आप बेहतर कर रहे हैं सिर्फ एक अंतरफलक है करने के लिए - यह बहुत आसान है https://developer.android.com/ प्रशिक्षण/मूल बातें/टुकड़े/communicating.html – Fattie

उत्तर

9

यहाँ मेरी कोड है 10 ActivityResult का उपयोग करें।

  1. उपयोग startActivityForResult(int, Intent)
  2. गतिविधि बी में जानकारी को सेट करने के setResult(RESULT_OK, data) का उपयोग
  3. अवहेलना onActivityResult(int, int, Intent) (जहां डेटा एक आशय है) और data -Intent

गतिविधि एक पकड़ने, Intent शुरू करने :

Intent i = new Intent(this, SecondActivity.class); 
startActivityForResult(i, 1); 

गतिविधि ए, डेटा को पकड़ने:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == 1) {  
     // make use of "data" = profit 
    } 
} 

गतिविधि बी:

Intent data = new Intent(); 
setResult(RESULT_OK, data) 
finish(); // ends current activity 
+0

मुझे गतिविधि बी में डेटा उद्देश्य कहां सेट करना चाहिए? मैंने इसे 'ActivityB.onDestroy() 'में सेट करने का प्रयास किया, लेकिन' गतिविधिA.onActivityResult()' में इरादा डेटा शून्य – anirus

+0

@anirus है, इसे 'onDestroy() 'में काम करना चाहिए। – poitroae

+0

मुझे अभी भी 'NullPointerException' मिलता है। यह मेरा कोड है। – anirus

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