2011-02-23 152 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的文本设置为适当的值。