2012-01-11 74 views
2

我知道我可以使用putExtra()将数据发送到其他活动。 在这种情况下,接收意图必须管理数据。有没有办法将数据发送到另一个意图,并且当意图在onActivityResult()中完成时数据正在返回?如何通过意向返回数据

我想要做什么:

  1. 搜索使用用户输入姓名的联系人

  2. 如果没有找到,启动联系人选择器意图

  3. 当联系人选取器返回联系用户挑选,仍然是 能够知道用户所做的初始输入

所以我想发送用户输入到联系人选择器的意图,并让它也返回这些数据。

任何想法?

回答

1

是的,看着startActivityForResultonActivityResult,在那里你传递一个标识符startActivityForResult识别发件人如:

intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(intent, 1); 
        break; 

在有针对性的意图已经完成了系统调用onActivityResult

public void onActivityResult(int requestCode, int resultCode,Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    // code 1 = take picture 
    if(requestCode==1 && resultCode==RESULT_OK) { 

这里来自startAct ..的'1'以requestCode参数的形式传入,并将结果传入'data'中。实际发送的内容取决于您所调用的活动。

E.g.在您自己的代码中,您可以在被调用的意图中执行以下操作,例如字符串“Hello World”的返回给调用者(“数据”是关键更高版本):

Intent intent = new Intent(); 
    intent.putExtra("data", "Hello World"); 
    setResult(RESULT_OK,intent); 

,然后通过data.get("data")

对于一些更多的例子检索看看this class for the first part(线373+ )和this one for an own intent that returns data

+0

这就是我正在做的接收用户选择的联系人;-)但没有迹象表明我的额外数据将被返回。 – Hokascha 2012-01-11 17:02:51

+0

感谢您的回答。 “实际发送的内容取决于您所调用的活动。”因此,尽管requestCode始终是相同的,但我无法发送和接收自定义数据,如用户输入? – Hokascha 2012-01-11 17:16:01

+0

您从被叫意图中返回的用户输入是我最后一个例子中的“Hello World” – 2012-01-11 19:52:03