4

我有一對活動必須共同生存或死亡。基本上AlphaActivity會做一些工作,然後爲BetaActivity發送一個意圖(startActivityForResult())。當BetaActivity完成後,我希望它爲GammaActivity發送一個意圖(startActivity()),然後自己調用finish()。完成後,我希望AlphaActivity的onActivityResult()方法被調用,但這似乎從未發生過。我的設計是在AlphaActivity的onActivityResult()內部,我打電話finish()。我的計劃是這樣的,一旦達到GammaActivity,用戶不能返回到AlphaActivity或BetaActivity。但目前後退按鈕確實將用戶帶到AlphaActivity。在onActivityResult完成活動不起作用

我確實有一些想法,爲什麼它不起作用,但在這裏討論它們是毫無意義的,因爲我對什麼可能實際工作感興趣。

編輯:

的代碼都相當標準的東西:

從裏面阿爾法

private void startBetaActivity() { 
    Intent intent = new Intent(this, BetaActivity.class); 
    startActivityForResult(intent, Constant.EXIT_CODE); 

} 

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

    if (resultCode == RESULT_OK) { 
     if (requestCode == Constant.EXIT_CODE) { 
      this.finish(); 
     } 
    } 
} 

從內部測試版:

if (success) { 
      startGammaActivity(); 
      finish(); 
     } 
+0

你所描述的應該可行。你可以在啓動BetaActivity的地方發佈代碼,然後完成它? – 2013-04-25 00:04:33

+0

你是否需要對'BetaActivity'的結果做些什麼?爲什麼'AlphaActivity'不能''完成()'當它啓動'BetaActivity'? – codeMagic 2013-04-25 00:08:36

回答

6

我想你只需要:

if (success) { 
     startGammaActivity(); 
     setResult(Activity.RESULT_OK); //add this 
     finish(); 
} 
4

在我的角度來看,你應該遵循這個,

  1. AlphaActivity與X請求代碼結果開始BetaActivity
  2. BetaActivity做他的工作,然後調用的setResult(Y,Z),並調用finish()
  3. AlphaActivity將運行onActivityResult與RequestCode X,的ResultCode Y和數據Z如果X和Y是你期望那麼那些開始GammaActivity最後調用finish()上AlphaActivity

你不應該開始BetaActivity GammaActivity因爲AlphaActivity onActivityResult將無法正常工作。

+0

我喜歡輸入。 +1。 – learner 2013-04-25 02:32:54

4

您還沒有叫的setResult()

if (success) { 
     startGammaActivity(); 
     setResult(RESULT_OK); 
     finish(); 
    } 

或者,如果你從來沒有要回去從BetaActivityAlphaActivity然後在這兩個活動艙單把android:noHistory=true

+0

我編輯了我的答案。 – 2013-04-25 00:54:09

+0

感謝您的輸入,尤其是關於'android:noHistory = true'的一些信息。我接受了另一個,因爲它看起來像他的第一個。 +1 – learner 2013-04-25 02:35:13

+1

你做得對,我投票給他。順便說一句,如果你曾經在onBackpress setResult然後你必須調用super() – 2013-04-25 02:38:52