У меня есть простая форма, где пользователь может добавлять, редактировать и удалять людей из списка. Когда пользователь выбрал редактирование человека, он выполняет 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;
}
}
Спасибо за любую помощь.
Прежде всего, посмотрите на трассировку стека с помощью DDMS, она скажет вам, в какой строке происходит исключение.
Что вы можете сделать в своей вызывающей активности, так это проверить resultCode
, а в своей вызываемой активности установить его с помощью setResult ()
.
Например, если пользователь нажал кнопку «Назад», код результата будет RESULT_CANCELED . В этом случае не пытайтесь извлечь данные из намерения.