2011-04-11 104 views
0

假設從活動A啓動活動B並從B啓動C.可以通過按下一個按鈕而不是按兩次BACK按鈕從C開始活動A ,還是內存泄漏的做法?啓動之前的活動

非常感謝,

的Gratzi

回答

0

看看

Intent.FLAG_ACTIVITY_CLEAR_TOP 

適合您的需求。

0

你必須這樣做:

`活動答:

public static final int ID = X 
     // .... 
    startActivityForResult(intentToB,ID) 
    // .... 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == ID){ 
     switch (resultCode){ 
     case RESULT_OK: 
      //... 
      break; 
     case RESULT_RETURN: 
      // ... 
     default: 
          //... 
     } 
    } 
} 

`

`活動B:

public static final int ID = Y 
     // .... 
    startActivityForResult(intentToC,ID) 
    // .... 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == ID){ 
     switch (resultCode){ 
     case RESULT_OK: 
      //... 
      break; 
     case RESULT_RETURN: 
      setResult(RESULT_RETURN); 
          ActivityB.this.finish(); 
     default: 
          //... 
     } 
    } 
} 

`

Activity C:
//inside of button onclick listener
setResult(RESULT_VOLVER);
ActivityC.this.finish();

+0

謝謝你的回覆,但你能更具體? – Gratzi 2011-04-11 10:44:05

+0

在一個活動中,你可以用'startActivityForResult(intent,IDofActivityA)' 開始等待resulte的其他活動,並用onActivityResult方法捕獲活動B的響應。如果你創建了一個RESULT_RETURN響應並用onActivityResult控制它,你可以創建從活動C到活動A的「方式」: 活動A呼叫活動B呼叫活動C ---> setResult(RETURN)。 Activity B catch - > setResult(return)和Activity捕獲。您無需按返回按鈕即可跨過您想要的所有活動。 對不起,我的英語。我不能更具體地 – Aracem 2011-04-12 07:47:49

0

我理解你的想法。從HomeActivity看來,你進入活動A,然後在活動B旁邊等等。對每個Acitivy(A,B,...)進行成像,當按下此按鈕時,有一個HOME按鈕可快速返回HOME。

這裏是源代碼:

public void btn_home_click(View v) { 
    Intent intent = new Intent(this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    finish(); 
} 
+0

如果你打完電話,那麼你將無法回到以前的活動。如果你不這樣做,新的「相同」活動將啓動。 – Gratzi 2011-04-11 11:01:03