Существует 2 сценария передачи данных между двумя действиями A, B.
- Деятельность A хочет передать данные по действию B (через намерение startActivity)
- Требуется действие Bчтобы вернуть данные по Деятельности A, когда она заканчивается, используя setResult
в обоих случаях, я предлагаю создать некоторые открытые статические окончательные переменные для использования дополнительных ключей.
Например, если вам нужночтобы передать целое число с помощью клавиши «рейтинг» от A до B, я, вероятно, сделал бы
class A extends Activity {
public static final String RESULT_STATUS = "RESULT_STATUS";
// Whatever ....
public void startB(int rating) {
Intent toStart = new Intent(this, B.class);
toStart.putExtra(B.EXTRA_RATING, rating);
startActivityForResult(toStart, 0);
}
public void onActivityResult(int requestCode /* 0 in our case */, int resultCode, Intent data) {
if (resultCode == RESULT_OK ) {
String returnedStatus = data.getStringExtra(RESULT_STATUS);
// Whatever ....
}
}
class B extends Activity {
public static final String EXTRA_RATING = "EXTRA_RATING";
public void onCreate(Bundle b) {
// Whatever ....
int rating = getIntent().getIntExtra(EXTRA_RATING,0);
}
// Whatever ....
public void returnDataAndFinish(String status) {
Intent result = new Intent();
result.putExtra(A.RESULT_STATUS, status);
setResult(RESULT_OK, result);
finish();
}
}