Android - Activity,A,B,C跳過B直接返回A
問題:一個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了。
分析:正常情況下: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了。
相關文章
- Activity A 跳轉到 Activity B,生命週期的執行過程
- [PAT B] 1011 A+B 和 C
- Android Activity跳轉閃屏問題Android
- PAT-B 1011 A+B 和 C
- C/S和B/S
- Android進階;Activity的棧與跳轉(筆記)Android筆記
- java版springcloud b2b2c社交電商多使用者商城系統b2b2c-Spring Cloud Stream 介紹JavaSpringGCCloud
- 鴻鵠雲商 B2B2C 產品概述
- B2B2C系統平臺解決方案
- b2b2c青梧商城更新使用說明
- 二)Java版Spring Cloud B2B2C o2o鴻鵠雲商平臺--b2b2c平臺規劃JavaSpringCloud
- java Spring Cloud b2b2c o2o 電子商務 Eureka【Finchley 版】-b2b2c小程式電子商務JavaSpringCloud
- Activity建立與跳轉
- codeforces round 961題解(A、B、C)
- Codeforces Round 840題解(A、B、C)
- Android頁面跳轉與返回機制詳解Android
- SpringBootb2b2c多使用者商城系統ssmb2b2cSpring BootSSM
- SiC B2B2C Shop平臺型電商系統
- B2B2C多租戶商城系統解決方案
- B2B2C商城系統原始碼要包含哪些功能?原始碼
- DSmall多商戶B2B2C開源商城原始碼原始碼
- java B2B2C 多租戶電子商城系統Java
- java B2B2C原始碼電子商務平臺Java原始碼
- B站難過“白嫖”關
- 1007:計算(a+b)×c的值(C C++)C++
- java b2b b2c o2o分散式電子商務雲平臺Java分散式
- java B2B2C Springcloud電子商務平臺原始碼-服務閘道器過濾器JavaSpringGCCloud原始碼過濾器
- java B2B2C Springcloud仿淘寶電子商城系統-服務閘道器(過濾器)JavaSpringGCCloud過濾器
- java spring cloud版b2b2c社交電商spring cloudb2b2c多商家入駐分散式微服務JavaSpringCloudDB2分散式微服務
- python演算法(列舉法):如果a + b + c = 1000(a, b, c均為非負整數),求滿足a^2 + b^2 = c^2的所有可能的值。Python演算法
- B2B2C多使用者國際版商城系統
- java B2B2C Springcloud電子商務平臺原始碼JavaSpringGCCloud原始碼
- Java多使用者商城系統B2B2C原始碼Java原始碼
- java B2B2C Springboot多租戶電子商城系統JavaSpring Boot
- java B2B2C springmvc mybatis多租戶電子商城系統-服務閘道器過濾器JavaSpringMVCMyBatis過濾器
- 筆記:從Aurora 8b/10b 到Aurora 64b/66b (一):Aurora 8b/10b筆記
- 在 A 裡面找有 C 的 B
- Codeforces Round 949題解(A、B、C、D)
- Online Judge——1000.A+B Problem(c++)C++