Как мне обработать кнопку возврата когда startActivityForResult активен?

У меня есть простая форма, где пользователь может добавлять, редактировать и удалять людей из списка. Когда пользователь выбрал редактирование человека, он выполняет startActivityForResult, чтобы он мог внести соответствующие изменения и обновить список после завершения редактирования. Если пользователь нажимает кнопку «Назад» на экране редактирования, появляется ошибка принудительного закрытия.

Я полагаю, что это как-то связано с тем, что система ожидает результата, и я не фиксирую это должным образом. Как бы я перехватил эту ошибку?

Вот код onActivityResult, который в настоящее время находится на месте:


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
 super.onActivityResult(requestCode, resultCode, intent);
 Bundle extras = intent.getExtras();
 switch(requestCode) {
 case ACTIVITY_CREATE:
  String person = extras.getString("person");
  mDbHelper.addPerson(person);
  fillData();
  break;
 case ACTIVITY_EDIT:
  Long rowId = extras.getLong("_id");
  if (rowId != null) {
   String editPerson = extras.getString("person");
   mDbHelper.updatePerson(rowId, editPerson);
  }
  fillData();
  break;
 }
}

Спасибо за любую помощь.

11
задан alockrem 22 August 2010 в 15:49
поделиться

1 ответ

Прежде всего, посмотрите на трассировку стека с помощью DDMS, она скажет вам, в какой строке происходит исключение.

Что вы можете сделать в своей вызывающей активности, так это проверить resultCode , а в своей вызываемой активности установить его с помощью setResult () .

Например, если пользователь нажал кнопку «Назад», код результата будет RESULT_CANCELED . В этом случае не пытайтесь извлечь данные из намерения.

12
ответ дан 3 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: