Re: [問題] 回上一頁,程式出錯
: 另外一頁的返回
: 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
討論串 (同標題文章)