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

Android startActivityForResult 重複調用導致頁面無法關閉

     編輯:程式設計綜合問答

問題代碼

Intent intent = new Intent(MainActivity.this, OtherActivity.class);
intent.putExtra("a", a);
intent.putExtra("b", b);
startActivity(intent);           // 錯誤:第一次啟動
startActivityForResult(intent, REQUESTCODE); // 第二次啟動,導致棧中有兩個 OtherActivity 實例

原因分析

startActivity() 和 startActivityForResult() 連續調用同一 Intent,會創建兩個 OtherActivity 實例。第一個實例無 setResult 機制,按返回鍵或 finish() 只能關閉第二個實例,第一個仍留在棧中,導致「無法關閉」現象。

修正方法

刪除第一行 startActivity(intent),僅保留 startActivityForResult():

Intent intent = new Intent(MainActivity.this, OtherActivity.class);
intent.putExtra("a", a);
intent.putExtra("b", b);
startActivityForResult(intent, REQUESTCODE); // 單次啟動,支持返回結果

補充說明

  • OtherActivity 中按鈕點擊調用 setResult(RESULT_OK, intent); finish(); 正確返回數據。
  • MainActivity 重寫 onActivityResult() 处理返回值,邏輯無誤。

一行多餘代碼導致 Activity 棧異常,刪除即可恢復正常頁面跳轉與數據返回。

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