首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android Activity 返回指定頁面:finish + Intent 精準導航

     編輯:程式設計疑難解答

場景

App 中有三個 Activity:
A(主頁) → B(詳情)
C(其他入口) → B(詳情)

B 頁面重寫了返回鍵邏輯,導致從 A 進入 B 時按返回鍵**錯誤跳回 C**,而非預期的 A。

解決方案:在 B 中攔截返回並強制跳轉

@Override
public void onBackPressed() {
    // 1. 銷毀當前 B
    finish();
    // 2. 顯式啟動目標 A(並清空棧上可能殘留的 C)
    Intent intent = new Intent(this, ActivityA.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
}

關鍵 Flag 解析

  • FLAG_ACTIVITY_CLEAR_TOP:若 A 已在棧中,清除其上方所有 Activity(含 C),直接復用 A 實例。
  • FLAG_ACTIVITY_SINGLE_TOP:防止 A 重複創建(若 A 已在棧頂則不新建)。

替代方案(視架構而定)

  • 統一入口模式:A、C 皆通過 startActivityForResult 啟動 B,B setResult 返回,由調用方決定跳轉邏輯。
  • 單 Activity + Fragment:徹底消除 Activity 棧管理痛點,Fragment 回棧由開發者完全可控。

核心原則:**不要依賴系統默認返回行為**,在需要精確導航時顯式 finish() + startActivity() 並配合適當 Flag。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved