bundle
एंड्रॉइड एप्लिकेशन में क्या है ? इसका उपयोग कब करें?
bundle
एंड्रॉइड एप्लिकेशन में क्या है ? इसका उपयोग कब करें?
जवाबों:
बंडल आमतौर पर विभिन्न एंड्रॉइड गतिविधियों के बीच डेटा पास करने के लिए उपयोग किया जाता है। यह आप पर निर्भर करता है कि आप किस प्रकार के मूल्यों को पास करना चाहते हैं, लेकिन बंडल सभी प्रकार के मूल्यों को पकड़ सकते हैं और उन्हें नई गतिविधि में पास कर सकते हैं।
आप इसे इस तरह से उपयोग कर सकते हैं:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
आप निम्न मान प्राप्त कर सकते हैं:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
आप अधिक जानकारी यहां पा सकते हैं:
गतिविधियों के बीच डेटा पास का उपयोग करके Bundle
और Intent
वस्तुओं।
आपका पहला एक Bundle
ऑब्जेक्ट बनाते हैं
Bundle b = new Bundle();
फिर, anystring
बंडल कुंजी के साथ संग्रहीत स्ट्रिंग डेटा को संबद्ध करें"myname"
b.putString("myname", anystring);
अब, एक Intent
ऑब्जेक्ट बनाएँ
Intent in = new Intent(getApplicationContext(), secondActivity.class);
b
आशय के लिए बंडल वस्तु पास करें
in.putExtras(b);
और दूसरी गतिविधि शुरू करें
startActivity(in);
दूसरी गतिविधि में, हमें पहली गतिविधि से पारित डेटा का उपयोग करना होगा
Intent in = getIntent();
अब, आपको बंडल से डेटा प्राप्त करने की आवश्यकता है
Bundle b = in.getExtras();
अंत में, कुंजी नाम के साथ जुड़े स्ट्रिंग डेटा का मूल्य प्राप्त करें "myname"
String s = b.getString("myname");
मुझे यह जोड़ना है कि बंडल का उपयोग भविष्य में स्वयं को डेटा पास करने के लिए गतिविधियों द्वारा किया जाता है।
जब स्क्रीन घूमती है, या जब कोई अन्य गतिविधि शुरू होती है, तो विधि protected void onSaveInstanceState(Bundle outState)
को लागू किया जाता है, और गतिविधि नष्ट हो जाती है। बाद में, गतिविधि का एक और उदाहरण बनाया जाता है, और public void onCreate(Bundle savedInstanceState)
कहा जाता है। जब गतिविधि का पहला उदाहरण बनाया जाता है, तो बंडल अशक्त होता है; और यदि बंडल अशक्त नहीं है, तो गतिविधि अपने पूर्ववर्ती द्वारा शुरू किए गए कुछ व्यवसाय को जारी रखती है।
एंड्रॉइड स्वचालित रूप से टेक्स्ट फ़ील्ड में पाठ को बचाता है, लेकिन यह सब कुछ नहीं बचाता है, और सूक्ष्म बग कभी-कभी दिखाई देते हैं।
सबसे आम विरोधी पैटर्न, हालांकि, यह मानकर चल रहा है कि onCreate()
सिर्फ प्रारंभिककरण है। यह गलत है, क्योंकि इसे राज्य को भी बहाल करना होगा।
इस "री-क्रिएट एक्टिविटी ऑन रोटेशन" व्यवहार को अक्षम करने का एक विकल्प है, लेकिन यह पुनरारंभ से संबंधित बग को नहीं रोकेगा, यह सिर्फ उनका उल्लेख करना अधिक कठिन बना देगा।
ध्यान दें कि एकमात्र तरीका जिसकी कॉल की गारंटी है जब गतिविधि नष्ट होने वाली है onPause()
। (डॉक्स में गतिविधि जीवन चक्र ग्राफ देखें।)
A Bundle
जावा Map
ऑब्जेक्ट की तरह है जो String
मानों के लिए मैप करता है। इसका उपयोग गतिविधियों और अन्य एप्लिकेशन घटकों के बीच जानकारी पारित करने के लिए किया जाता है। इसका उपयोग राज्य सूचना को पकड़ने और पुनर्स्थापित करने के लिए ढांचे द्वारा भी किया जाता है।
एंड्रॉइड इसके लिए सादे पुरानी Map
वस्तुओं का उपयोग नहीं करता है, Map
यह बहुत लचीला है; इसमें ऑब्जेक्ट्स (जैसे, कहते हैं, I / O स्ट्रीम) शामिल हो सकते हैं जिन्हें क्रमबद्ध नहीं किया जा सकता है। Bundle
एपीआई वस्तुओं है कि इस तरह से कि बंडल की सामग्री serializable होने की गारंटी कर रहे हैं में एक बंडल में जोड़ा जा सकता के प्रकार को प्रतिबंधित करता है। एंड्रॉइड फ्रेमवर्क इस संपत्ति पर निर्भर करता है।
मेरा सुझाव है कि आप एप्लिकेशन फंडामेंटल पर प्रलेखन पढ़ें । यह बताता है कि अन्य बातों के अलावा, बंडलों और इरादे क्या हैं और उनका उपयोग किस लिए किया जाता है।
इरादों के माध्यम से एक गतिविधि से दूसरी गतिविधि तक मनमाना डेटा भेजने के लिए बंडलों का उपयोग किया जा सकता है। जब आप एक इरादे का प्रसारण करते हैं, तो इच्छुक गतिविधियाँ (और अन्य ब्रॉडकास्टरेसीवर्स) को इसकी सूचना दी जाएगी। एक आशय में एक बंडल हो सकता है ताकि आप आशय के साथ अतिरिक्त डेटा भेज सकें।
बंडल कुंजी-मूल्य मैपिंग हैं, इसलिए एक तरह से वे हैश की तरह हैं, लेकिन वे कड़ाई से एकल स्ट्रिंग / फू ऑब्जेक्ट मैपिंग तक सीमित नहीं हैं। ध्यान दें कि केवल कुछ डेटा प्रकारों को "पार्सलेबल" माना जाता है और उन्हें बंडल एपीआई में स्पष्ट रूप से लिखा जाता है।
बस एक बंडल बनाएं,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
"This_is_the_next_class.class" में
आप इस तरह से आइटम पुनः प्राप्त कर सकते हैं।
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
बंडल: - स्ट्रिंग मानों से विभिन्न पार्सलेबल प्रकारों की मैपिंग।
आमतौर पर एंड्रॉइड की विभिन्न गतिविधियों के बीच डेटा पास करने के लिए बंडल का उपयोग किया जाता है।
जब हम onPause () को onStop () और फिर रिवर्स ऑर्डर onStop () से onPause () कहते हैं।
पिछले राज्य को पुनर्स्थापित करने के लिए सिस्टम द्वारा उपयोग किए गए सहेजे गए डेटा को "इंस्टेंस स्टेट" कहा जाता है और एक बंडल ऑब्जेक्ट में संग्रहीत की-वैल्यू जोड़े का एक संग्रह है।
बंडल का उपयोग गतिविधियों के बीच डेटा साझा करने के लिए, और ऑनक्रिएट () पद्धति में ऐप की स्थिति को बचाने के लिए किया जाता है ताकि ऐप को पता चल जाए कि उसे कहां रोका गया था ... मुझे आशा है कि यह मदद करता है :)
बंडल का उपयोग आशय वस्तु की मदद से एक गतिविधि से दूसरी गतिविधि तक डेटा भेजना; बंडल डेटा को पकड़ें जो किसी भी प्रकार का हो सकता है।
अब मैं बताता हूं कि दो गतिविधि के बीच बंडल पासिंग डेटा कैसे बनाया जाए।
चरण 1: पहली गतिविधि पर
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
चरण 2: दूसरी गतिविधि पर
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
मुझे लगता है कि यह आपके लिए उपयोगी है ..........।
पहली गतिविधि:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
दूसरी गतिविधि:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");