Re: [問題] 回上一頁,程式出錯

看板AndroidDev作者 (Mosil)時間12年前 (2014/01/01 18:37), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
: 另外一頁的返回 : public boolean onKeyDown(int keyCode, KeyEvent event){ : if (keyCode==KeyEvent.KEYCODE_BACK){ : Intent i = new Intent(file_b.this, file_a.class); : startActivityForResult(i, 0); : finish(); : } : return false; : } 只留本段程式碼 先請問個問題 為什麼這段的返回要用 Intent 然後去 startActivityForResult 再將自己給 finish 掉 如果直是單純的要返回到上一個 activity,那就單純的 finish 掉自己就好啦? 若是要傳直回上一個 activity,那請把回傳值放到 bundle 裡 設定 setResult,再 finish 即可,大致如下 if(keyCode == KeyEvent.KEYCODE_BACK) { Bundle data = new Bundle(); data.putString("msgc_value", "your msessage"); setResult(resultCode, data); finish(); } 然後讓 file_a.class 那個 actvity 的 onActivityResult 去接值 最後,解釋為何程式會爆掉 因為您用了 startActivityForResult 這個動作是 "create" file_a.class 這個 activity 所以,生命週期會從 activity 的 onCreate 開始 而在 onCreate 裡又在 getIntent 的取值處沒有防錯 在這個狀況下的 "一定" 沒有值傳過去,取值一定會為空,所以一定會爆掉 以上,希望能解決您的問題 :D -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.235.248.54

01/01 20:41, , 1F
感謝
01/01 20:41, 1F
文章代碼(AID): #1Im-_M6L (AndroidDev)
文章代碼(AID): #1Im-_M6L (AndroidDev)