嘗試將 EditText 物件本身透過 Intent.putExtra() 傳遞給另一個 Activity,但 Intent 僅支援基本型別、Parcelable/Serializable 物件,View 及其子類別皆不可序列化。
// 送出端
Intent intent = new Intent(A.this, B.class);
intent.putExtra("input_text", editText.getText().toString());
startActivity(intent);
// 接收端
String text = getIntent().getStringExtra("input_text");
editText.setText(text);
// 送出端
intent.putExtra("view_id", editText.getId());
// 接收端 (同一 Activity 或已知版面)
int id = getIntent().getIntExtra("view_id", -1);
EditText et = findViewById(id);
// Activity A
startActivityForResult(new Intent(this, B.class), REQUEST_CODE);
// Activity B 完成後
Intent result = new Intent();
result.putExtra("result_text", editText.getText().toString());
setResult(RESULT_OK, result);
finish();
// Activity A 接收
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String text = data.getStringExtra("result_text");
}
}
永遠傳遞資料 (字串、數字、ID),不要嘗試傳遞 View 實例。View 持有 Context 參考,跨 Activity 傳遞會導致記憶體洩漏與序列化失敗。