2012-09-13 43 views
14

我有一個3活動的應用程序。在Android的簡歷活動

我有主要活動。這稱爲第二項活動,然後調用第三項活動。我想在不輸入onCreate的情況下返回主要活動。

這是第三個活動代碼:

startActivity(new Intent(TerceraActiviry.this, Main.class)); 
+0

使用launchMode singleTop – njzk2

+0

singleTop只會重新如果一個實例已經在活動堆棧的頂部,則使用相同的實例,在這種情況下,它不會是 – kingraam

回答

39

如果您Activity仍在運行,該代碼將它帶到前面,而無需輸入onCreate

Intent openMainActivity= new Intent(TerceraActiviry.this, Main.class)); 
openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivityIfNeeded(openMainActivity, 0); 
+1

謝謝。我在很多小時內搜索這個解決方案。你在幾分鐘內就解決了。 –

+0

我想在第一行有1個額外的「)」。 –

1

您startActivityForResult而不是startActivity。

請參閱android開發人員獲取更多信息here

+0

我不同意 - 如果使用startActivityForResult啓動該活動,這仍會創建活動 – kingraam

+0

的新實例第二和第三個活動,你可以返回到第一個活動通過設置RESULT_OK並調用finish()方法(分別)。通過將控制權交還給已經存在的主要活動。 – Gan

+0

公平點 - 在這個問題的背景下,它看起來像你建議他用startActivityForResult替代startActivity,這沒有幫助 – kingraam

2

爲了找回以前的活動,你必須完成的可見的一個,使用此:

finish(); 

如果活動開始一個結果,你應該給一個結果,那麼,像這樣:

Intent intent = new Intent(); 
intent.putExtra(KEY_RESPONSE, responseData); 
setResult(RESULT_OK, intent); 
finish(); 

你應該使用捉對來電者的活動結果:

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

    switch (requestCode) { 
    // Test for the code you have used to start the Activity 
    } 
} 

希望它可以幫助, Regards

0

你想要的啓動模式標誌是clearTop。這將返回到主要活動的前一個實例,並清除活動堆棧中的第二個和第三個活動。例如,從代碼做到這一點:

Intent intent = new Intent(TerceraActiviry.this, Main.class)); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

這將調用onCreate爲主要活動 – Gabriel