Для того чтобы вернуться из одной активности в предыдущую без ее пересоздания, можно использовать метод startActivityForResult()
вместо startActivity()
.
Ваша "предыдущая" активность должна вызвать вторую активность с помощью метода startActivityForResult()
, вместо обычного вызова startActivity()
.
Например, чтобы вернуться из ActivityB
в ActivityA
, следует изменить код вызова в ActivityA
:
Intent intent = new Intent(ActivityA.this, ActivityB.class); startActivityForResult(intent, REQUEST_CODE);
После этого в ActivityB
при необходимости возвращения в ActivityA
необходимо вызвать метод setResult()
перед вызовом finish()
. setResult()
передает результат и статус текущей активности обратно в вызывающую активность:
Intent returnIntent = new Intent(); setResult(Activity.RESULT_OK, returnIntent); finish();
В ActivityA
вы должны переопределить метод onActivityResult()
, чтобы получить результат из ActivityB
:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE) { if (resultCode == RESULT_OK) { // Здесь вы можете получить любые данные из ActivityB } } }
Таким образом, вы можете передать данные из ActivityB
обратно в ActivityA
, не пересоздавая ее. Если вы хотите вернуться без передачи данных, достаточно вызвать finish()
в ActivityB
.