2011-10-17 8 views
5

मेरे पास एक ऐसी गतिविधि है जो उपयोगकर्ता द्वारा संपर्क करने के बाद शुरू हो जाती है। अब उपयोगकर्ता द्वारा सहेजे गए संपर्क से पहले सहेजे गए इंस्टेंसस्टेट को बुलाया जाता है और मैंने बंडल में एक स्ट्रिंग डाल दी है। अब, उपयोगकर्ता संपर्क का चयन करने के बाद और परिणाम लौटा दिए जाते हैं। onRestoreInstanceState बुलाया नहीं जाता है। केवल रेज़्यूम() पर कॉल किया जाता है। तो गतिविधि शुरू होने के बाद मैं अपनी स्ट्रिंग को बंडल से वापस खींचने के बारे में कैसे जाउंगा?ऑनर्यूम() में बंडल से स्ट्रिंग को कैसे खींचें?

+0

इस प्रश्न को देखें: http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activity – slayton

+0

मुझे यह नहीं मिला कि यह मेरे साथ क्या करना है प्रश्न –

उत्तर

5

चलें कहते हैं कि तुम दो क्रियाएँ एक है और बी, और गतिविधि एक गतिविधि बी शुरू होता है आप बी करने के लिए एक से जानकारी पारित करने के लिए चाहते हैं, आप के साथ बी को एक से जानकारी पारित कर सकते हैं:

Intent i = new Intent(this. ActivityB.class); 
i.putExtra("Key","Value"); 
startActivity(i); 

फिर गतिविधि बी में आप

String value = this.getIntent().getExtras().getString("keyName"); 

के साथ स्ट्रिंग प्राप्त कर सकते हैं हालांकि, अगर आप आप एक अलग विधि का उपयोग करने के लिए है एक करने के लिए बी से जानकारी पास करना चाहते हैं। startActivity का उपयोग करने के बजाय आपको startActivityForResult का उपयोग करने की आवश्यकता है। इस विधि का विवरण यहाँ पाया जाता है: How to return a result (startActivityForResult) from a TabHost Activity?

+0

getIntent() –

+0

के लिए एक getBundle विधि नहीं है मेरा उत्तर – dymmeh

+0

जांचें तो SavedInstanceState पर, क्रियाएँ और ऑनस्टोर इंस्टेंसस्टेट पर गतिविधियां बंडल करने का कोई तरीका नहीं है? –

3

सबसे पहले, क्यों onRestoreInstanceState फायरिंग नहीं है: documentation के अनुसार, onRestoreInstanceState onStart() है, जो, activity lifecycle diagram के अनुसार, केवल onCreate के बाद कहा जाता हो जाता है के बाद कहा जाता हो जाता है या रीस्टार्ट पर। यदि आपका मुख्य गतिविधि नष्ट नहीं होता है जब उपयोगकर्ता संपर्क चुनने के लिए जाता है, तो ऑनस्टार्ट कभी भी आग नहीं लगाएगा, और ऑनस्टोर इंस्टेंसस्टेट कभी भी आग नहीं लगेगा। आरेख यह मामला दिखाता है जब "गतिविधि के सामने एक और गतिविधि आती है", और पर रोक दिया जाता है - वहां से आपकी गतिविधि केवल तभी मारे जायेगी जब सिस्टम को और अधिक स्मृति की आवश्यकता हो।

दूसरा, आपके द्वारा सहेजे गए डेटा को कैसे प्राप्त करें संपर्क चुनने से- एक स्थानीय चर को यह करना चाहिए, क्योंकि गतिविधि स्मृति में रह रही है। यदि आप उस बिंदु पर पहुंचते हैं जहां गतिविधि स्मृति में रहती है, तो RestoreInstanceState को आग लगनी चाहिए।

+0

बहुत बहुत धन्यवाद। आपका आखिरी हिस्सा मैं जो करने की कोशिश कर रहा हूं उसके लिए बहुत ही फायदेमंद था –

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