我有一个editText,旁边是一个按钮。当您单击该按钮时,我使用onClick来触发一个意图来启动一个新活动,这会打开listView。
单击listView中的项目时,我希望listView活动关闭并使用该项填充editText。看起来我对这一切都错了,有什么建议吗?
答案 0 :(得分:2)
您必须开始第二个活动“for result”,然后在其中设置结果。结果将传递给第一个活动,您可以随意使用它。
在此处检查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 :(得分:2)
当您触发意图时,请使用“startActivityForResult”,如Starting Activities, Getting Results中所述。
当您使用ListView触发活动的意图时,该行应如下所示:
Intent someIntent = new Intent(someAction, someUri);
startActivityForResult(someIntent, SOME_REQUEST_CODE);
在使用ListView的Activity中,在返回之前,使用“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)
...
}
}
}
希望这可以帮助!
答案 2 :(得分:1)
您要做的是使用StartActivityForResult()
开始新活动。然后让您的onActivityResult()
方法接收您在选择活动中选择的信息,并将EditText的文本设置为适当的值。