我有一個editText,它旁邊是一個按鈕。當你點擊按鈕時,我使用onClick來觸發一個意圖,以啓動一個新的活動,這將啓動listView。從listView填充editText
當您單擊listView中的項目時,我想讓listView活動關閉並使用該項目填充editText。這似乎是我在這一切都錯了,有什麼建議嗎?
我有一個editText,它旁邊是一個按鈕。當你點擊按鈕時,我使用onClick來觸發一個意圖,以啓動一個新的活動,這將啓動listView。從listView填充editText
當您單擊listView中的項目時,我想讓listView活動關閉並使用該項目填充editText。這似乎是我在這一切都錯了,有什麼建議嗎?
當您觸發該意圖時,請使用「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)
...
}
}
}
希望這有助於!
我不會使用RESULT_OK作爲請求代碼(您的第一個代碼框),因爲它已經用於結果(您的最後一個代碼框)。 – Maaalte 2011-02-23 20:14:59
Woops!固定。謝謝! – 2011-02-23 20:20:16
你必須開始第二個活動「結果」,然後在裏面設置結果。然後將結果傳遞給第一個活動,您可以隨時隨地使用它。
檢查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
你想要做的就是用StartActivityForResult()
開始新的活動。然後讓您的onActivityResult()
方法接收您在選擇活動中選擇的信息,並將EditText的文本設置爲適當的值。
羅傑,沒有理由不起作用。你可以告訴我們你到目前爲止的代碼,也許我們可以看到你的錯在哪裏。 – 2011-02-23 19:05:49
截至目前,您剛纔描述了您正在努力實現的目標,但不是您嘗試失敗的地方。請告訴我們什麼不起作用。 – 2011-02-23 19:06:42