2011-09-28 28 views
47

का उपयोग कर एक और गतिविधि के hashmap मूल्य भेजने के लिए कैसे एक दूसरे आशय के आशय से HashMap मूल्य भेजने के लिए?कैसे एक आशय

इसके अलावा, कैसे दूसरे गतिविधि में है कि HashMap मान प्राप्त करने के लिए?

+1

हाय, आप कौन सा मूल्य भेज रहे हैं (int, string, double ..)? – naresh

+0

हैशप <स्ट्रिंग, स्ट्रिंग>। – Piyush

+0

का अर्थ है स्ट्रिंग वैल्यू मैं – Piyush

उत्तर

144

जावा की हैश मैप कक्षा Serializable इंटरफ़ेस को बढ़ाती है, जो Intent.putExtra(String, Serializable) विधि का उपयोग करके इसे किसी इरादे में जोड़ना आसान बनाता है।

गतिविधि/सेवा/प्रसारण प्राप्तकर्ता जो इरादे प्राप्त करता है, तो आप उस नाम के साथ Intent.getSerializableExtra(String) पर कॉल करते हैं जिसका उपयोग आपने PutExtra के साथ किया था।

उदाहरण के लिए, जब आशय भेजने:

HashMap<String, String> hashMap = new HashMap<String, String>(); 
hashMap.put("key", "value"); 
Intent intent = new Intent(this, MyOtherActivity.class); 
intent.putExtra("map", hashMap); 
startActivity(intent); 

और फिर प्राप्त गतिविधि में:

protected void onCreate(Bundle bundle) { 
    super.onCreate(savedInstanceState); 

    Intent intent = getIntent(); 
    HashMap<String, String> hashMap = (HashMap<String, String>)intent.getSerializableExtra("map"); 
    Log.v("HashMapTest", hashMap.get("key")); 
} 
+16

ध्यान दें कि हैशमैप्स क्रमबद्ध करें। मानचित्र, जाहिर है, मत करो। –

+3

मानचित्र एक इंटरफ़ेस है - आप एक इंटरफेस को क्रमबद्ध नहीं कर सकते हैं, केवल इसका एक विशिष्ट कार्यान्वयन। इस मामले में, मानचित्र Serializable इंटरफ़ेस को स्वयं लागू/विस्तारित नहीं करता है, इसलिए यह विशिष्ट कार्यान्वयन पर निर्भर करता है चाहे वह Serializable लागू करना चाहे या नहीं। और हैश मैप इसे लागू करता है। – JesusFreke

+1

हाय, मैं एक हैश मैप <स्ट्रिंग, ऑब्जेक्ट> एक गतिविधि से एक धारावाहिक अतिरिक्त के रूप में भेज रहा हूं जिसे मैंने दूसरी गतिविधि से परिणाम के लिए शुरू किया था। तो मैं परिणाम पर एक इरादा वापस कर रहा हूँ। जब मैं इरादे से हैश मैप को पुनः प्राप्त करने का प्रयास करता हूं, (हैश मैप <स्ट्रिंग, ऑब्जेक्ट>) intent.getSerializableExtra ("map"); शून्य वापस आता है। क्या ऐसा इसलिए है क्योंकि मैं हैश मैप <स्ट्रिंग, ऑब्जेक्ट> का उपयोग कर रहा हूं या क्योंकि मैं इसे किसी गतिविधि से भेज रहा हूं जो किसी अन्य गतिविधि के परिणामस्वरूप बनाया गया था? – marienke

0

मुझे आशा है कि यह भी काम करना चाहिए।

भेजने गतिविधि

Intent intent = new Intent(Banks.this, Cards.class); 
          intent.putExtra("selectedBanksAndAllCards", (Serializable) selectedBanksAndAllCards); 
          startActivityForResult(intent, 50000); 

प्राप्त गतिविधि

Intent intent = getIntent(); 
    HashMap<String, ArrayList<String>> hashMap = (HashMap<String, ArrayList<String>>) intent.getSerializableExtra("selectedBanksAndAllCards"); 

जब मैं निम्नलिखित की तरह एक HashMap भेज रहा हूँ में में ,

Map<String,ArrayList<String>> selectedBanksAndAllCards = new HashMap<>(); 

आशा है कि यह हेल होगा किसी के लिए पी।

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