如何通过意图返回数据

时间:2012-01-11 16:49:57

标签: android android-intent

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

我想做什么:

  1. 使用用户输入作为名称

  2. 搜索联系人
  3. 如果找不到任何内容,请启动联系人选择器意图

  4. 当联系人选择器返回用户选择的联系人时,仍然是 能够知道用户的初始输入

  5. 所以我考虑将用户输入发送到联系人选择器意图并使其返回此数据。

    有什么想法吗?

1 个答案:

答案 0 :(得分:2)

是的,请查看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。在您自己的代码中,您可以在被调用的Intent中执行以下操作:将字符串“Hello World”返回给调用者(“data”是后来的键):

  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