2012-08-28 40 views
13

我想知道是否顯示我的活動,因爲用戶在其他活動上按下了 。在生命週期中,我無法識別任何強大的給我的信息的回調 。確定活動是否因後退導航而到達

onRestart()不起作用。如果將應用任務帶到前面,它也會觸發。 onResume()不會出於同樣的原因。

我想有一個簡單的解決方案,但在Android中,據說簡單的事情可能是非常討厭的。

+1

研究[此答案](HTTP://計算器。 com/a/10493384/779408) – breceivemail

+1

這有點晚,但爲什麼不重新啓動?這個對我有用? – osrl

回答

14

startActivityForResult(Intent, int)打電話給您的第二個活動,然後在第二個活動中覆蓋onBackPressed(),並使其setResult()RESULT_CANCELED。最後,在onActivityResult()有第一個活動。

代碼例如:

活動1:

Intent i = new Intent(Activity1.this, Activity2.class); 
startActivityForResult(i, 0); 

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

    if (requestCode == 0) { 
     if (resultCode == RESULT_CANCELED) { 
       // user pressed back from 2nd activity to go to 1st activity. code here 
     } 
    } 
} 

活動2:

@Override 
public void onBackPressed() { 
    setResult(RESULT_CANCELED); 
    finish(); 
} 
+1

很好的答案,雖然我有大約15個活動,我使用的AndoridAnnotations沒有選擇調用startActivityForResult(但是,即將發佈的版本中)...所以我仍然希望其他想法... – Jakob

+1

AndroidAnnotations是否阻止你是否使用了像這樣的普通的基本Android構造?我不會使用這樣的工具,然後... – Ridcully

+1

不,我可以使用標準的android構造,但我已經有15個活動,我必須現在觸摸。答案可能只是「做到這一點的方式」。 – Jakob

相關問題