2011-02-23 150 views
2

我有一個editText,它旁邊是一個按鈕。當你點擊按鈕時,我使用onClick來觸發一個意圖,以啓動一個新的活動,這將啓動listView。從listView填充editText

當您單擊listView中的項目時,我想讓listView活動關閉並使用該項目填充editText。這似乎是我在這一切都錯了,有什麼建議嗎?

+0

羅傑,沒有理由不起作用。你可以告訴我們你到目前爲止的代碼,也許我們可以看到你的錯在哪裏。 – 2011-02-23 19:05:49

+0

截至目前,您剛纔描述了您正在努力實現的目標,但不是您嘗試失敗的地方。請告訴我們什麼不起作用。 – 2011-02-23 19:06:42

回答

2

當您觸發該意圖時,請使用「startActivityForResult」,如Starting Activities, Getting Results中所述。

當你火的意圖來使用ListView活動,此行應該是這樣的:

Intent someIntent = new Intent(someAction, someUri); 
startActivityForResult(someIntent, SOME_REQUEST_CODE);  


在使用ListView的活動,返回之前,使用「的setResult」的方法來設置正確的resultCode(你傳入的那個)和一個保存數據的Intent。

... 
Intent data = new Intent(); 
data.putExtra("key",value);  
setResult(RESULT_OK, Intent data) 
.... 


然後,回到你的呼叫活動,onActivityResult會被調用,包含的數據。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == SOME_REQUEST_CODE) { //which activity you're returning from 
     if (resultCode == RESULT_OK) { // Everything went as expected 
      Bundle extras = data.getExtras(); 
      String val = extras.getString(key); 
      doSomething(val) 
      ... 
     } 
    } 
} 


希望這有助於!

+0

我不會使用RESULT_OK作爲請求代碼(您的第一個代碼框),因爲它已經用於結果(您的最後一個代碼框)。 – Maaalte 2011-02-23 20:14:59

+0

Woops!固定。謝謝! – 2011-02-23 20:20:16

2

你必須開始第二個活動「結果」,然後在裏面設置結果。然後將結果傳遞給第一個活動,您可以隨時隨地使用它。

檢查startActivityForResult參考這裏:在第二個活動 http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29

使用的setResult設置結果(整數只): http://developer.android.com/reference/android/app/Activity.html#setResult%28int%29

使用onActiviryResult以獲得結果: http://developer.android.com/reference/android/app/Activity.html#onActivityResult%28int,%20int,%20android.content.Intent%29

1

你想要做的就是用StartActivityForResult()開始新的活動。然後讓您的onActivityResult()方法接收您在選擇活動中選擇的信息,並將EditText的文本設置爲適當的值。