После нажатия кнопки я хочу перейти ко второму мероприятию, ввести данные во втором занятии, а затем вернуться к основному занятию, но с данными в ListView.
Что я могу изменить, чтобы приложение работало? Потому что теперь я получаю только сообщение: приложение остановлено, но я не получаю информацию о какой-либо ошибке.
Это просто потому, что вы неправильно думаете, что Activity.finish()
всегда вызывается всякий раз, когда вы закрываете действие. Но это никогда не будет называться Android. Взгляните на это изображение Lifecyle из Концепции жизненного цикла активности :
![Activity-lifecycle concepts](https://i.stack.imgur.com/mmC6Y.png)
вы можете видеть, что только onStop()
тогда onDestroy()
вызывается при закрытии активности.
Вам необходимо вызвать метод finish()
вручную, чтобы отправить свое намерение. Или, что лучше, создайте метод, который только строит и устанавливает намерение для результата. Примерно так:
private void prepareResult(String name) {
Intent i = new Intent();
i.putExtra("name", name);
setResult(RESULT_OK, i);
}
затем звоните, когда хотите закрыть свою деятельность:
String name = editText.getText().toString();
prepareResult(name);
finish();
Или вы можете переопределить onBackPressed()
, чтобы также передать нажатие спины, как показано ниже:
@Override
public void onBackPressed() {
Intent i = new Intent();
name = editText.getText().toString();
i.putExtra("name", name);
setResult(RESULT_OK, i);
// The default implementation simply finishes the current activity
// see the documentation.
super.onBackPressed();
}