[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 來傳遞多筆資料