2011-06-15 73 views

回答

40

使用putExtra(String, Serializable)在一個意圖傳遞價值和getSerializableExtra(String)方法來檢索數據。

從活動A傳遞一個ArrayList<HashMap<String, String>>到活動乙

Intent intent = new Intent(this, B.class); 
HashMap<String, String> hm = new HashMap<String, String>(); 
hm.put("sunil", "sahoo"); 
ArrayList<HashMap<String, String>> arl = new ArrayList<HashMap<String, String>>(); 
arl.add(hm); 
intent.putExtra("arraylist", arl); 
startActivityForResult(intent, 500); 

檢索在活動B數據

ArrayList<HashMap<String, String>> arl = (ArrayList<HashMap<String, String>>) getIntent().getSerializableExtra("arraylist"); 
System.out.println("...serialized data.."+arl); 
+1

謝謝它的工作。 – sandy 2011-06-20 09:07:09

+0

getSerializableExtra似乎不存在,即時通訊使用蜂窩。 – Neil 2012-08-12 12:13:47

+1

你救了我的一天! – 2013-08-30 15:21:28

4

您可以使用一個Bundle將元素從一個Activity傳遞到另一個。

檢查了這一點:http://developer.android.com/reference/android/os/Bundle.html

您創建捆綁,放入意向,然後在新的活動,你得到它,並提取所需的元素。

它是這樣的:

Bundle b = new Bundle(); 
String s = "hello"; 
b.putString("example", s); 
intent.putExtras(b); 

,然後在新的活動:

Bundle b = this.getIntent().getExtras(); 
String s = b.getString("example"); 
+1

而是他可以使用intent.putStringArrayList(「name」,value),,但他有Hashmap對象存儲在它..不字符串... – ngesh 2011-06-15 09:50:20

1

這裏是另一種技術, 我用下面的行來定義的ArrayList在firstClass中。

static ArrayList al=new ArrayList(); 

在第二個活動,我用下面一行擺脫的Firstclass ArrayList中的數據,

firstClass.al.size(); 
+0

玩靜態遊戲通常不是一個好主意! – 2011-06-15 10:41:24

+0

他當然可以做到這一點,但通常情況下,僅僅因爲你需要其他地方就可以做出靜態的東西並不是一個好主意。 – seth 2011-06-16 09:39:16

+0

如果static不是一個好主意,那麼爲什麼java編程語言包含「static」關鍵字。 – user609239 2011-06-16 10:52:35

0

我的想法,你可以定義一個全局靜態變量在包裝上這組數據並保存它首先跳轉到另一個活動。

相關問題