我有MainActivity,我在其中使用startActivityForResult打开另一个活动,我在其中处理列表中的一些数据。我也可以编辑这些数据并删除。点击手机的后退按钮后,我想将此编辑后的列表发送回主要活动。 我应该在哪里用新列表创建该意图?是否有任何方法可以覆盖后退按钮?
答案 0 :(得分:3)
在MainActivity中使用startActivityForResult()方法调用AnotherActivity:
Intent i = new Intent(this, AnotherActivity.class);
startActivityForResult(i, 1);
如果需要,可以在AnotherActivity中设置要返回MainActivity的数据。
Intent returnIntent = new Intent();
returnIntent.putExtra("mData", object);
setResult(RESULT_OK, returnIntent);
finish();
在MainActivity中,您必须以这种方式覆盖/实现onActivityResult()方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("mData");
}
if (resultCode == RESULT_CANCELED) {
// do something if there is no result
}
}
}
查看更多内容:
答案 1 :(得分:0)
您可以覆盖onBackPressed
并将数据传回原始Activity
。但是为了像这样传递它,列表必须实现Parcelable
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
Bundle data = new Bundle();
data.putParcelableArrayList("someKey", listThatImplementsParcelable);
intent.putExtras(data);
setResult(RESULT_OK, intent);
finish();
}