2013-06-01 83 views
0

假設我有3個活動。多個活動調用相同的活動結果

  • 首先
  • 結果。

First and Second both call Result activity by startActivityForResult()。 結果中,基於調用活動,我想返回不同的結果。

是否有任何方法可以決定哪個人調用了結果活動並將結果返回給該活動。

回答

4

你可以找到使用getCallingActivity()

+0

酷簡短的回答+1 – stinepike

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); 
    } 
} 

如果你想有一些活動立刻在後臺,你可以通過在每個活動的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); 
    } 
} 
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"); 
    } 
}