我有一个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