子 Activity 將 ArrayList<Receipt> 傳回父 Activity,並在 onActivityResult 取出。
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 略
}
ArrayList<Receipt> receipts = ...; // 準備資料
Intent resultIntent = new Intent();
resultIntent.putExtra("receipt_list", receipts); // key 自訂
setResult(RESULT_OK, resultIntent);
finish();
@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 共享資料避免序列化。