2017-05-17 79 views
0

我有3個活動:如何知道當前活動之後意圖是否來自2個活動?

活性A - >活動B(無歷史) - >活動Ç

活動A:

Intent intent = new Intent(getContext(), ActivityB.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
startActivityForResult(intent, IntentKey.ActivityB); 

活性B:

Intent intent = new Intent(this, ActivityC.class); 
startActivityForResult(intent, IntentKey.ActivityC); 

或者有一個Back按鈕來調用這個方法:

finish(); 

活動C:

Intent returnIntent = new Intent(); 
returnIntent.putExtra("test", "fromActivityC"); 
setResult(RESULT_OK, returnIntent); 
finish(); 

活動答:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    // Only returns from Activity B, never from C 
} 

任何人都可以給我建議?

+0

安置自己的''onActivityResult在活動B. –

+0

它是有用的呢?由於我將活動B設置爲無歷史記錄 – Rendy

+0

有必要擁有它。您的活動C不知道活動B是如何啓動的。所以它會調用B的onActivityResult' –

回答

0

既然你已經開始活動下從活動B的結果,活動Ç只會叫onActivityResult()的活動B.

也是一樣的活動A.因爲你是從活動的起始活動B的結果,活動B將僅針對活動A調用onActivityResult()

您需要在活動B中調用活動A中的onActivityResult()調用setResult()

0

首先,你ActivityC不知道ActivityAonActivityResult()只有當您設置使用setResult()方法called activty結果將被調用。

ActivityA中,方法onActivityResult()只有在您從ActivityB設置result時纔會被調用。

所以,你需要得到的testActivityBonActivityResult()的價值和使用intentsetResult()方法來發送這個valueActivityA

ActitvityB

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (data.getExtras() != null) { 
     String str = data.getStringExtra("test"); 

     Intent returnIntent = new Intent(); 
     returnIntent.putExtra("test", str); 
     setResult(RESULT_OK, returnIntent); 
    } 
} 

ActitvityB獲取的test值。

ActitvityA

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (data.getExtras() != null) { 
     String str = data.getStringExtra("test"); 
     Toast.makeText(getApplicationContext(), "ActivityA onActivityResult() called value is: " + str, Toast.LENGTH_SHORT).show(); 
    } 
} 
相關問題