Android - Activity,A,B,C跳過B直接返回A

yangxi_001發表於2014-04-18
問題:一個application(即同一個.apk)裡面有A,B,C三個Activity,啟動順序為:A為action=main&Launch即application啟動的第一個activity,A啟動B,B啟動C,那想從關閉C之後直接回到A,而不是回到B?? 

分析:正常情況下:A啟動B之後,A進入Stop的狀態,並且B進入活動棧棧頂,B啟動C之後,B進入Stop的狀態,並且C進入活動棧棧頂,此時活動棧為從棧底開始為:A-->B-->C,若C通過finish關閉之後,返回到的是B,因為C關閉finish為C出棧,此時處於棧頂的為B,所以C關閉之後系統將棧頂的B顯示。那想finish掉C之後,想顯示A怎麼辦呢? 

解決方法一:finish C的同時也finish B,那麼A就處於棧頂,就可以顯示A了。問題又來了,怎麼可以同時finish A呢? 

看主要的程式碼: 

A啟動 B的程式碼: 
Intent intent = new Intent(A.this,B.class); 
startActivityForResult(intent,0); 

B程式碼: 
Intent intent = new Intent(B.this,C.class); 
startActivityForResult(intent,1); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
// TODO Auto-generated method stub 
super.onActivityResult(requestCode, resultCode, data); 
if(resultCode==RESULT_OK){ 
setResult(RESULT_OK); 
finish(); 



C程式碼: 
setResult(RESULT_OK); 
finish(); 

解釋:在C關閉finish之前呼叫etResult(RESULT_OK);返回OK給B,B在onActivityResult裡接受到OK之後就可以將自己finsh,這樣就可以做到關閉C,B了。 

相關文章