0

我有一个具有 HomeActivity 和 4 个活动 A、B、C、D 的应用程序。我想在单击start_activity_A_btnHomeActivity 中的按钮时为活动 A 加注星标,A 启动 B,B 启动 C,C 启动 D,然后done按钮将我带到 HomeActivity。
注意:在每个活动(A、B、C、D)中,我都有一些data要保存并在按下done按钮后返回 HomeActivity。

4

2 回答 2

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 活动恢复。

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

if(this.getIntent().getExtras().getString("data") != null)
{
  String data = this.getIntent().getExtras().getString("data");
  //do some stuff here with that data
}
于 2012-08-28T01:16:25.823 回答
0

如果你需要返回一个Activity的数据,你应该使用startActivityForResult来启动ABCD。这很像您的 HomeActivity 正在打开一些对话框,一旦 Activity 完成(按完成或取消,取决于),您会在 HomeActivity 中获得onActivityResult 。

于 2012-08-28T00:57:20.087 回答