返回多个活动的结果

时间:2014-05-07 13:32:57

标签: android android-layout android-intent

我有MainActivity和活动: A,B和C. 流程如下:

  

MainActivity - > A(得到一些输入) - > B(得到一些输入) - >   C(得到一些输入)

我想从所有活动(A,B和C)获取输入并将其保存到数据库。

我尝试使用

Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivityForResult(intent, id);

但我只是从活动C

获得结果

我有一个解决方案,即将数据保存在全局对象中,然后在用户返回MainActivity时使用它,但我不想采用这种方法,因为我确信可以使用{ {1}}

执行此操作的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

如果您想摆脱全局对象,可以重用extras Intent来收集数据。使用startActivityForResult()而不是乘法活动可能会更容易。但两者的想法是相同的,重用调用Activity的Intent的Bundle

在您的活动中拥有Bundle作为成员,并将调用的Intent的额外内容保存到其中。像这样:

在你的活动B中:

bundle = getIntent().getExtras();

现在将B的所有数据放在此Bundle之外。

bundle.putString(... , ...);

如果你打电话给f.e. C将此Bundle传递给Intent:

Intent i = new Intent(this, C.class);
i.putExtras(bundle);
startActivity(i);

这样,如果用户导航回您的活动A,您可以收集数据并将其读出。如果您想使用startActivityForResult(),只需使用onActivityResult(int, int, Intent)回调中的意图。

答案 1 :(得分:0)

我认为你应该覆盖方法

void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ? && resultCode ==?) {
        ...
    }
}
在MainActivity中。

,在A,B,C中,您可以使用

setResult(int resultCode, Intent data)

发送一些数据。