我有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}}
执行此操作的最佳方式是什么?
答案 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)
发送一些数据。