当startActivityForResult处于活动状态时,如何处理后退按钮?

alo*_*rem 11 android

我有一个简单的表单,用户可以从列表中添加,编辑和删除人员.当用户选择编辑某个人时,它会执行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;
 }
}
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助.

JRL*_*JRL 12

首先,使用DDMS查看堆栈跟踪,它将告诉您异常发生在哪一行.

您可以在调用活动中执行的操作是检查resultCode,并在您的被调用者活动中设置它setResult().

例如,如果用户按下了resultCode将是RESULT_CANCELED.如果是这种情况,请不要尝试从意图中提取数据.