android活动调用并返回结果

时间:2012-01-10 07:01:14

标签: android android-activity

我有3个活动A,B和C
流程是: 活动A呼叫B,B呼叫C.(A - > B - > C)
现在我在活动C中,想要将一些结果返回给活动A而不涉及B. 场景是活动B应仅由A呼叫(如果用户按下C后退按钮,B将不会被呼叫,活动A将出现在前面)。 任何人都让我知道如何处理这种情况。

更新:

我从A

调用活动B.
Intent intent = new Intent(this, B.class);
            startActivityForResult(intent, 0);

我以同样的方式从B调用C.

在A我骑过onActivityResult方法

4 个答案:

答案 0 :(得分:2)

  • 从ActivityA开始将ActivityB作为StartActivityForResult
  • 在onCreate()方法中,将ActivityC作为StartActivityForResult从ActivityB启动。 Don't finish ActivityB
  • 完成工作后从ActivityC set the result
  • 在ActivityB中,当您在OnActivityResult()中获得结果时,将结果设置为ActivityA并完成ActivityB。
  • 从ActivityC覆盖onBackPressed()并将结果设置为null并完成ActivityC

答案 1 :(得分:1)

在startActivity调用活动B中的C后调用finish()

答案 2 :(得分:1)

这是你做的简单方法

活动C中的

Intent i=new Intent(getApplicationContext(), A.class);
i.putExtra("id", id);
startActivity();

返回按钮事件

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
       Intent i=new Intent(getApplicationContext(), A.class);
       i.putExtra("id", id);
       startActivity();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

答案 3 :(得分:1)

我认为您必须致电Activity C from B by startActivityForResult(),然后致电Activity B override onActivityResult() and put finish();同样来自Activity A start Activity B by startActivityForResult()这将指向活动A而不重新处理它。