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 棧異常,刪除即可恢復正常頁面跳轉與數據返回。