2014-01-06 67 views
0

我有3個活動:A,B和C如何知道什麼活動返回

從AI得到了B和從AI去C.

A --- B 
| 
| 
C 

當我回歸A從這兩項活動中,我按下後退按鈕。

從A,我怎麼知道堆棧中有什麼活動?我怎麼知道是B還是C?

UPDATE - - 我想知道如何知道什麼活動按onBackPress();我不使用B或C的startActivity;

回答

1

只要使用Android的請求代碼與startActivityForResult()。在活動A中,用不同的請求代碼調用B或C.首先,定義代碼:

private static final int ACTIVITY_B_REQUEST = 100; 
private static final int ACTIVITY_C_REQUEST = 200; 

然後開始行動。

B:

Intent intent = new Intent(this, ActivityB.class); 
startActivityForResult(intent, ACTIVITY_B_REQUEST); 

和C:

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

然後,仍然在你ActivityA,重寫onActivityResult(),並檢查哪個請求代碼時,被按下後退按鈕返回:

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

    switch (requestCode) { 
     case ACTIVITY_B_REQUEST: 
      //returned from ActivityB 
      break; 

     case ACTIVITY_C_REQUEST: 
      //returned from ActivityC 
      break; 

     default: 
      break;   
    } 
} 

不需要傳遞任何東西從B或C - 它已經由Android的照顧。

2

當啓動活動A和C時,請使用startActivityForResult(...)而不是常規startActivity(...)。您可以爲ACTIVITY_ID,ACTIVITY_B和ACTIVITY_C創建靜態整數變量。當您的用戶退出B或C時,請使用相應的ID變量呼叫setResult(...)。有關此方法的更多信息,請參見活動顯影劑DOC:http://developer.android.com/reference/android/app/Activity.html

+0

我想知道如何知道這在B和C按onBackPressed()時。我沒有使用startActivity(),只有onBackPressed()。 – Roland

+0

在'onBackPressed(...)'調用'setResult(...)'。在活動A中覆蓋'onActivityResult(...)'在那裏獲取結果。 –

相關問題