打开多个活动时如何返回第一个活动

时间:2012-08-28 00:51:01

标签: android android-activity

我有一个具有HomeActivity的应用程序和4个活动A,B,C,D。 我想点击HomeActivity中的按钮start_activity_A_btn来标记活动A,A开始B,B开始C,C开始D,然后done按钮将我带到HomeActivity。
注意:在每个活动(A,B,C,D)中,我有一些data要保存,并在按下done按钮后返回HomeActivity。

2 个答案:

答案 0 :(得分:1)

您需要做什么在意图中使用以下标志(请查看链接,它解释了与您面临的情况类似的情况):FLAG_ACTIVITY_REORDER_TO_FRONT。因此,在您的活动D中,在完成按钮的onClickListener中,这是您必须使用的代码:

Intent intent = new Intent(this, ActivityAname.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("data", dataYouReceiveFromABCD);
startActivity(intent);

这将使您的A活动恢复。

现在,关于“数据”你只需要使用一些分隔符继续在String中累积这些数据(如果可能的话)(因为你没有告诉我们这些数据是什么),所以如果它是一个用户名,你可以使用可能永远不会发生的随机字符组合来分隔两者的密码(“246 @ $ ^”),然后继续创建一个你在A,B,C和D中建立的字符串然后最后在D中你把那个String作为额外的意图(检查我上面发布的代码)。如果它是其他类型的数据,那么你可以序列化它,如果这有帮助。但是,如果您确实使用带有预定分隔符的String,那么您需要做的只是在活动A中,您必须在活动A的onResume()方法中使用以下代码。

if(this.getIntent().getExtras().getString("data") != null)
{
  String data = this.getIntent().getExtras().getString("data");
  //do some stuff here with that data
}

答案 1 :(得分:0)

如果您需要返回活动的数据,则应使用startActivityForResult启动ABCD。这非常类似于您的HomeActivity正在打开一些对话框,一旦活动完成(通过按完成或取消,取决于),您将在HomeActivity中获得onActivityResult