我正在使用StartActivityForResult进行多个活动。我的主要活动是初始化它的地方。在我的第二个活动中,我输入了一些值并传递给第三个活动。现在,当我在第三个活动上时,如果我想编辑我传递的值,我希望能够返回到第二个活动。我该怎么办?
主戏.java
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE)
{
if (resultCode == Activity.RESULT_OK)
{
//Something
}
}
第二幕.java
Intent vd2 = new Intent(ViolatorDetails1.this,ViolatorDetails2.class);
vd2.putExtra("name",name);
vd2.putExtra("lname",lname);
vd2.putExtra("lnumber",lnumber);
vd2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
vd2.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(vd2);
finish();
第三幕.java
Intent intent = new Intent();
intent.putExtra("firstname",name);
intent.putExtra("lastname", lname);
intent.putExtra("licensenumber", lnumber);
setResult(Activity.RESULT_OK, intent);
finish();
如何从第三个活动返回到第二个活动以编辑某些值(如果有的话(?
启动第三个活动时,不应在第二个活动上调用 finish((。
然后 onActivityResult(( 将在第三个活动完成时调用。
叫
startActivityForResult(vd2);
而不是
startActivity(vd2);
只需删除finish();
Intent vd2 = new Intent(ViolatorDetails1.this,ViolatorDetails2.class);
vd2.putExtra("name",name);
vd2.putExtra("lname",lname);
vd2.putExtra("lnumber",lnumber);
vd2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
vd2.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(vd2);
finish(); //remove this line
这样,当您的第三个活动关闭时,用户将返回到第二个活动,您还应该在第二个活动中实现onActivityResult
,以便您可以处理天气用户想要编辑或已完成并且应该返回到第一个活动!(即设置意图的结果来自第一个活动并完成第二个活动!
这是我在代码中的意思: 在你的第二个活动中这样做,
@override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE)
{
if (resultCode == Activity.RESULT_OK)
{
// user should have done his job on 3rd activity and we should finish the 2nd activity to go back to first activity!
}else{
//user still editing!
}
}
而不是startActivity(vd2);
做startActivityForResult(vd2);