我可以在按下后退按钮时将数据发送到父活动。 但是,对于向上按钮,我无法实现类似的逻辑,并且数据没有返回到父活动,为什么会这样?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
.....
Intent resultIntent = new Intent();
resultIntent.putExtra("noteJSON", noteJSON.toString());
setResult(Activity.RESULT_OK, resultIntent);
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
我正在使用startActivityForResult
来启动子活动。在onactivityresult
基本上处理意图信息。返回时,按钮按下其工作状态。按下UP时onactivityresult
永远不会被执行。那就是问题
答案 0 :(得分:1)
当您调用navigateUpFromSameTask
方法时,它会完成当前活动并启动(或恢复)相应的父活动。如果目标父活动位于任务的后台堆栈中,则会将其提前。因此,onActivityResult
将不会被调用。
如果您想确保通过onActivityResult
返回结果,请按以下步骤删除对navigateUpFromSameTask
的通话:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
....
Intent resultIntent = new Intent();
resultIntent.putExtra("noteJSON", noteJSON.toString());
setResult(Activity.RESULT_OK, resultIntent);
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:0)
尝试以下
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
.....
startActivity(new Intent(YourActivity.this,ParentActivity.class).putExtra("noteJSON", noteJSON.toString()));
return true;