2011-02-24 88 views
0

我有一個editText和按鈕。按下按鈕,它將啓動一個listView活動。點擊listView中的一個項目,它會關閉該活動並將editText設置爲被點擊的項目。listView中的後退按鈕導致崩潰

但是,如果你到達listView並點擊一個項目後按鈕,它會崩潰。我想我需要在onPause上做些事情,但不確定這是否是最好的方式。

ListView控件,當點擊項...

  Intent intent = new Intent(); 
      Bundle b = new Bundle(); 
      b.putString("TEXT", ((TextView) view).getText().toString()); 
      intent.putExtras(b); 
      setResult(SUCCESS_RETURN_CODE, intent); 
      finish(); 

onActivityResult ....

  Bundle b = data.getExtras(); 
      mEditCategory.setText(b.getString("TEXT")); 
+0

如果您遇到崩潰,那麼您的日誌中將顯示完整的堆棧跟蹤。你需要發佈。 – EboMike 2011-02-24 00:10:35

+0

我在日誌中沒有看到任何東西。但是如果我刪除Bundle b = data.getExtras();來自onActivityResult,它不會崩潰,但當您選擇一個項目時它不起作用。 – Roger 2011-02-24 00:31:28

+0

如果它崩潰,你一定會有一個完整的調用堆棧和錯誤信息。 – EboMike 2011-02-24 00:33:25

回答

3

你得到一個例外:datanull因爲你的活動沒有返回結果。

默認情況下,後退鍵將結束活動而不設置結果。檢查resultCode參數onActivityResult看到子活動是否退回,因爲列表項被點擊:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == SUCCESS_RETURN_CODE) { 
     // TODO handle data here from list item click 
    } 
} 

resultCodeRESULT_CANCELED如果活動明確地返回,沒有返回任何結果,或在墜毀其運作(見docs for Activity)。

+0

谷歌文檔,但不好。正如邁克的例子所顯示的那樣,你不妨在繼續之前檢查是否成功。 http://developer.android.com/training/basics/intents/result.html#ReceiveResult – Sasquatch 2014-11-01 04:40:04