startActivityForResult
是 Android 中用于啟動一個新的 Activity,并在該 Activity 結(jié)束時返回結(jié)果的方法。這種機(jī)制允許在兩個 Activity 之間進(jìn)行數(shù)據(jù)傳遞。以下是 startActivityForResult
與數(shù)據(jù)傳遞的關(guān)系:
startActivityForResult
方法啟動一個新的 Activity。你需要傳遞一個 Intent 對象,該對象包含了要啟動的 Activity 的類名和要傳遞給新 Activity 的數(shù)據(jù)。同時,你還需要提供一個請求碼(requestCode),用于標(biāo)識這次請求。Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("key", "value"); // 將數(shù)據(jù)添加到 Intent 中
startActivityForResult(intent, REQUEST_CODE);
getIntent()
方法獲取傳遞過來的 Intent 對象,并從中提取數(shù)據(jù)。然后,根據(jù)需要處理這些數(shù)據(jù)。Intent intent = getIntent();
String value = intent.getStringExtra("key");
// 處理數(shù)據(jù)
setResult
方法設(shè)置結(jié)果碼(resultCode)和一個包含返回數(shù)據(jù)的 Intent 對象。然后,調(diào)用 finish()
方法結(jié)束新 Activity。Intent resultIntent = new Intent();
resultIntent.putExtra("result_key", "result_value");
setResult(RESULT_OK, resultIntent);
finish();
onActivityResult
方法以接收新 Activity 返回的結(jié)果。這個方法會在新 Activity 結(jié)束時被調(diào)用。你可以通過檢查請求碼(requestCode)和結(jié)果碼(resultCode)來確定是否接收到了正確的結(jié)果。@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");
// 處理返回的數(shù)據(jù)
}
}
總之,startActivityForResult
與數(shù)據(jù)傳遞的關(guān)系主要體現(xiàn)在以下幾點:
startActivityForResult
方法啟動新 Activity,并將數(shù)據(jù)添加到 Intent 中。getIntent()
方法獲取傳遞過來的數(shù)據(jù)。setResult
方法設(shè)置返回結(jié)果,并通過 finish()
方法結(jié)束新 Activity。onActivityResult
方法以接收新 Activity 返回的結(jié)果。