多个活动为结果调用相同的活动

时间:2013-06-01 07:51:43

标签: android android-intent android-activity

假设我有3项活动。

  • 首先
  • 第二
  • 结果。

第一个和第二个都按startActivityForResult()调用结果活动。 在结果中,基于调用活动,我想返回不同的结果。

有没有办法决定哪一个调用了Result Activity并将结果返回给该活动。

3 个答案:

答案 0 :(得分:5)

您可以使用getCallingActivity ()

找到通话活动

答案 1 :(得分:1)

您不能同时拥有多项活动。你是想让它们一个接一个地按顺序运行吗?

实现此目的的一种方法是为结果启动每个活动:

Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, 0);

使用请求代码跟踪活动何时运行的位置。然后,在onActivityResult中,您可以开始下一个:

protected void  onActivityResult  (int requestCode, int resultCode, Intent  data) {
  if (requestCode < NUM_ACTIVITIES) {
    Intent intent = new Intent(this, MyActivity.class);
    startActivityForResult(intent, requestCode + 1);
  }
}

如果您希望在后台立即进行一些活动,可以通过在每个Activity的onCreate中调用startActivity将它们链接在一起。如果您在创建任何视图之前在onCreate中启动新活动,则该活动将永远不可见。

protected void  onCreate  (Bundle savedInstanceState) {
  int numLeft = getIntent().getIntExtra("numLeft");
  if (numLeft > 0) {
    Intent intent = new Intent(this, MyActivity.class);
    intent.putExtra("numLeft", numLeft - 1);
    startActivity(intent);
  }
}

答案 2 :(得分:0)

在您调用活动时,使用setresult完成活动

Intent in = new Intent();
setResult(100, in);
finish();

在您的第一个活动中

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    Log.i(Tag, "Result: " + Integer.toString(resultCode));

    if (resultCode == 200) {
            Log.i(Tag, "second");           
    } else if (resultCode == 100) {
            Log.i(Tag, "activity");
    } 
}