2012-02-20 67 views
5

场景:调用的第三个活动将其结果返回到第一个活动,而不是将结果发送到第二个活动?

  1. 第一项活动始于startActivityForResult秒活动
  2. 次活动开始第三个活动与startActivityForResult

预期结果: 三(最后)活动设置这是对陷入结果 activity's onActivityResult

当前显示结果: 三(最后)活动设置这是对第一活动的onActivityResult抓到结果

如何设置上,将在第二活动的第三个被抓的第三个活动的结果(最后)活动将由此被捕获到第二个活动的onActivityResult?

一些代码片段:

第一项活动

public class TestProjActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.main); 

    Log.i("TAAAG", "1st activity - startActivityForResult"); 
    Intent intent = new Intent(TestProjActivity.this, Activ2.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); 
    startActivityForResult(intent, 1008); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.i("TAAAG", "1st activity - onActivityResult"); 
    if (resultCode == RESULT_OK) { 
     Log.i("TAAAG", String.valueOf(requestCode)); 
     switch (requestCode) { 
     case 1008: 
      String info = data.getExtras().getString("KEY1"); 
      Log.i("TAAAG", "1st activity - onActivityResult - printing result"); 
      Log.i("TAAAG", info); 
      break; 
     } 
    } 
} 

}

次活动

public class Activ2 extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Log.i("TAAAG", "2nd activity - startActivityForResult"); 
    Intent intent = new Intent(Activ2.this, Activ3.class); 

    startActivityForResult(intent, 1009); 

    Intent intent2 = new Intent(); 
    intent2.putExtra("KEY1", "VALUE1"); 


    setResult(RESULT_OK, intent2); 
    finish(); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.i("TAAAG", "2nd activity - onActivityResult"); 
    if (resultCode == RESULT_OK) { 
     Log.i("TAAAG", String.valueOf(requestCode)); 
     switch (requestCode) { 
     case 1009: 
      String info = data.getExtras().getString("KEY2"); 
      Log.i("TAAAG", "2nd activity - onActivityResult - printing result"); 
      Log.i("TAAAG", info); 
      break; 
     } 
    } 
} 

}

第三个活动

public class Activ3 extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Log.i("TAAAG", "3rd activity - Inserting Value and finishing"); 

    Intent intent = new Intent(); 
    intent.putExtra("KEY2", "VALUE2"); 

    setResult(RESULT_OK, intent); 
    finish(); 
} 

}

+3

您正在完成第二个活动j在你启动你的第三个之后。所以从我所知道的第一个活动会收到结果,因为第二个活动不再运行。尝试删除完成();从Activty2创建并看看会发生什么! – 2012-02-20 12:18:14

+0

是的,谢谢 - 它解决了这个问题! – Chaiavi 2012-02-20 12:36:02

回答

2

我想你应该在第二个活动....

8

使用活动标志,以转发导致超活性OnCreate中最后一行删除finish();

intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); 
+0

拯救生命!!!! – 2015-09-01 10:10:18

+0

这应该被标记为接受 – 2017-02-24 03:32:07

相关问题