从另一个活动返回结果的最佳方法是什么?

时间:2015-12-30 02:28:45

标签: android android-activity

我有三个活动(例如活动A,活动B,活动C),活动A通过调用startActivityForResult()方法调用活动B,然后活动B调用活动C.

活动A应在onActivityResult()方法结束活动C和B时从活动C收到返回值。

对于扩展问题,可能需要更多活动步骤(A - > B - > C - > D - > - > ... - >返回A)以获得结果和概念问题是第一个活动应该从onActivityResult()方法的上一个活动收到返回值。

过程

  1. 活动A来电 - >活动B调用 - >活动C
  2. 完成活动(B,C)并仅保留活动A.
  3. 活动以onActivityResult方式接收C活动的结果。
  4. 我该怎么做?

    应用场景

    • 活动A:是主要活动,并有一个开始测验按钮和分数编辑文本。
    • 单击开始按钮时,启动活动B.
    • 活动B:显示第1轮测验,完成后,继续下一轮。
    • 活动C:显示第2轮测验,完成后,继续下一轮。
    • 活动D:显示第3轮测验,完成此操作后,关闭B,C,D活动并将总分(round1 + round2 + round3)返回到A活动。

    活动A应该能够识别活动D完成事件,因此在完成D时显示总得分。

3 个答案:

答案 0 :(得分:2)

您可以使用startActivityForResults从A调用活动B.然后对活动B执行相同操作以启动活动C.在活动B中覆盖onActivityResult并将此意图发送到此方法中的活动A.例如:

 @Override
 public void onActivityResult(int req, int res, Intent result)
 {
 super.onActivityResult(req, res, result);
 setResult(RESULT_CODE,result);
  }

或者您可以在C类中创建自己的界面并在A类上实现它。

答案 1 :(得分:0)

在android中使用事件总线的经典场景你可以使用像otto或greenrobot或Rxjava这样的事件总线库,或者使用通过意图传递数据的经典方法。

答案 2 :(得分:0)

尝试使用intent从上一个活动调用第一个活动,如下所示

Intent intent = new Intent(LastActivity.this, MainActivity.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 intent.putExtra("RESULT", "result to main activity");
 startActivity(intent);