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

Android Activity 間資料傳遞錯誤:直接實例化 Activity 導致資料遺失

     編輯:程式設計綜合問答

錯誤代碼


public class MyView extends View {
    MainActivity mainAc = new MainActivity(); // 錯誤:建立新實例,非當前 Activity
    // 使用 mainAc.startPaint[0] 總是預設值 0
}

正確做法:Intent 傳遞資料


// MainActivity 啟動
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("paintData", paintArray); // 可序列化陣列
startActivity(intent);

// SecondActivity 接收
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int[] data = getIntent().getIntArrayExtra("paintData");
    setContentView(new MyView(this, data)); // 透過建構子傳入
}

// MyView 建構子
public MyView(Context context, int[] data) {
    super(context);
    this.data = data; // 使用傳入的真實資料
}

替代方案

  • ViewModel:跨 Activity/Fragment 共享資料,生命週期感知。
  • 單例/靜態持有者:簡單場景可用,但需注意記憶體洩漏與多進程問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved