首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Activity 間傳遞 ArrayList:Serializable 實作與 Intent 封裝

     編輯:程式設計綜合問答

需求

子 Activity 將 ArrayList<Receipt> 傳回父 Activity,並在 onActivityResult 取出。

資料類別實作 Serializable

public class Receipt implements Serializable {
    private static final long serialVersionUID = 1L;
    public String referenceNo;
    public byte[] image;        // 圖片位元組陣列
    public String comments;
    public long createdOn;      // 使用 long 存儲時間戳,避免 Date 序列化問題
    public long updatedOn;
    // 建構子、Getter/Setter 略
}

子 Activity 送出資料

ArrayList<Receipt> receipts = ...; // 準備資料
Intent resultIntent = new Intent();
resultIntent.putExtra("receipt_list", receipts); // key 自訂
setResult(RESULT_OK, resultIntent);
finish();

父 Activity 接收資料

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQ_CODE && resultCode == RESULT_OK && data != null) {
        @SuppressWarnings("unchecked")
        ArrayList<Receipt> list = (ArrayList<Receipt>) data.getSerializableExtra("receipt_list");
        // 使用 list 更新 UI 或存入資料庫
    }
}

注意事項

  • byte[] 直接序列化較大圖片可能導致 TransactionTooLargeException(Binder 限制 ~1MB)。大圖建議存檔案,只傳路徑或 URI。
  • 所有巢狀物件皆需實作 Serializable。
  • 若資料結構複雜,考慮使用 Parcelable 效能更好,或採用 ViewModel + LiveData 共享資料避免序列化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved