startActivityForResult
是 Android 中用于啟動一個新的 Activity,并在該 Activity 結束時返回結果的方法。這種機制允許在兩個 Activity 之間進行數據傳遞。以下是 startActivityForResult
與數據傳遞的關系:
startActivityForResult
方法啟動一個新的 Activity。你需要傳遞一個 Intent 對象,該對象包含了要啟動的 Activity 的類名和要傳遞給新 Activity 的數據。同時,你還需要提供一個請求碼(requestCode),用于標識這次請求。Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("key", "value"); // 將數據添加到 Intent 中
startActivityForResult(intent, REQUEST_CODE);
getIntent()
方法獲取傳遞過來的 Intent 對象,并從中提取數據。然后,根據需要處理這些數據。Intent intent = getIntent();
String value = intent.getStringExtra("key");
// 處理數據
setResult
方法設置結果碼(resultCode)和一個包含返回數據的 Intent 對象。然后,調用 finish()
方法結束新 Activity。Intent resultIntent = new Intent();
resultIntent.putExtra("result_key", "result_value");
setResult(RESULT_OK, resultIntent);
finish();
onActivityResult
方法以接收新 Activity 返回的結果。這個方法會在新 Activity 結束時被調用。你可以通過檢查請求碼(requestCode)和結果碼(resultCode)來確定是否接收到了正確的結果。@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String resultValue = data.getStringExtra("result_key");
// 處理返回的數據
}
}
總之,startActivityForResult
與數據傳遞的關系主要體現在以下幾點:
startActivityForResult
方法啟動新 Activity,并將數據添加到 Intent 中。getIntent()
方法獲取傳遞過來的數據。setResult
方法設置返回結果,并通過 finish()
方法結束新 Activity。onActivityResult
方法以接收新 Activity 返回的結果。