2013-10-18 36 views
5

我呼籲結果的活動:的Android,完成()關閉活動的應用INSEAD

private static final int CODE_LOGIN = 0; 
private static final int CODE_DETAILS = 1; 

private void callDetailsActivity() { 
    Intent switchToDetailsActivity = new Intent(getApplicationContext(), Details.class); 
    switchToDetailsActivity.putExtra(TAG_ID, details.get(TAG_ID)); 
    startActivityForResult(switchToDetailsActivity, CODE_DETAILS); 
} 
Details.class

現在我打電話要回以前的活動:

@Override 
public void onBackPressed() { 
    setResult(RESULT_OK); 
    super.onBackPressed(); 
} 

然後我onActivityResult()

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == CODE_LOGIN) { 
       // This is for my other Activity, where the "return" works 
     } 
    } 
    updateOffers(); 
} 

但是回到我的上一節課,應用程序關閉時沒有任何錯誤日誌。當我按主頁按鈕去我的以前的應用程序,我可以去我的應用程序,然後我在我以前的活動,但這肯定不是它應該工作的方式。

我也試過不改變onBackPressed(),或者乾脆把finish()寫成onBackPressed(),但沒有任何工作。

我沒有設置android:noHistory="true"

與我的其他活動(其中excatly使用相同的代碼),它完美的作品(CODE_LOGIN)。

有人可以幫我嗎?

+0

你能不能也分享在第一個活動的「onActivityResult」的代碼? –

+0

嘗試在onBackPressed()的底部添加super.onBackPressed並從新的Intent()中移除參數。 – Vijju

+0

你在'startActivityForResult'後面調用'finish()'嗎? – Doomsknight

回答

1

更改setResult(RESULT_OK, returnToOffers);setResult(RESULT_OK);並擺脫returnToOffers意圖。爲了將來的兼容性,我還建議用super.onBackPressed()替換finish()

就像在Android Lik-M-Aid(或任何下一個版本)中一樣,當用戶使用後退按鈕取消活動時,他們決定做一些特殊的紅色發光效果,您不必更新應用程序來支持它。

+0

我改變了你所說的代碼,但它仍然無效。 – user1053864

+0

您可以將您的清單添加到問題中並指出哪些活動無法正常工作?問題可能在那裏。 – Tenfour04

2

也許你已經在AndroidManifest中聲明瞭第一個activity爲android:noHistory =「true」?

2

我發現了我的錯誤。 在我的代碼深處,我不小心調用了finish(),所以在全局中,我調用了finish()兩次,導致關閉應用程序。

感謝您的幫助和使用super.onBackPressed的意見()