top of page

[Android] 使用 Intent 在 Activity 之間傳複雜結構的資料

這幾天開發 App 因為需要在 Activity 之間傳遞資料

偏偏不是單純的傳遞 String、int、boolean之類的

今天要傳的是物件

剛好在網路上找到了一個類似的方法

之後稍微改了一下之後就達到我要的需求了

所以當然要來記錄一下

大家都知道在 Android 開發中要在每個 Activity 之間存取資料大概就幾個方法

1. 利用 Java 的物件導向特性

2. 直接設一個變數當作資料的存取 (其實這個跟第一點差不多)

3. 用繼承的方式將資料都放在父類別中 (不建議此方法)

4. 利用 Intent 機制

上述的前面三點其實在 App 開發中比較不建議

因為開發 App 不像開發網站與系統

開發 App 必須要時刻考量到記憶體與手機 CPU 的運算能力

雖然現在的智慧型手機可以說是一台微型電腦了

但是運算能力還是比不上桌上型電腦阿

第四點的 Intent 機制只要開發過 App 的人一定不陌生

因為這就是讓 Activity 之間互相切換的機制

當然也可以用這個機制讓 Activity 在切換中傳遞資料

如下圖 :

使用 Intent 的 putExtra就可以在 Activity 之間傳遞資料了

從上圖中我們可以看到 putExtra 分很多種

但是都沒有我所需要的

在查詢資料的時候剛好看到這篇

在裡面可以看到他是使用 ArrayList 與 HashMap< String,Object>

而我將它使用的方法稍微修改了一下並且配合 Gson (真心覺得 Gson 是一大神器啊)

接下來就是看 Code 啦

小弟我寫程式沒有很久

如果有寫不好的地方請見諒

MainActivity : 傳資料

ArrayList<String> list = new ArrayList<>();

for (Object obj : objectList) {

list.add(gson.toHson(obj));

}

startActivity(new Intent(this, Main2Activity.class).putExtra("data", list));

Main2Activity : 接資料

在 onCreate 中這樣寫

ArrayList<String> list = (ArrayList<String>) getIntent.getSerializableExtra("data");

然後再用 Gson 將 JSON 的字串轉換成物件

雖然看似最後還是傳遞字串然後配合 Gson 來轉換成物件

但是其實差別在於說可以用極少的程式碼以及 Array 來傳遞多筆資料

bottom of page