从listView填充editText

时间:2011-02-23 19:03:40

标签: android

我有一个editText,旁边是一个按钮。当您单击该按钮时,我使用onClick来触发一个意图来启动一个新活动,这会打开listView。

单击listView中的项目时,我希望listView活动关闭并使用该项填充editText。看起来我对这一切都错了,有什么建议吗?

3 个答案:

答案 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的文本设置为适当的值。