我知道我可以使用putExtra()
将数据发送到其他活动。
在这种情况下,接收意图必须管理数据。有没有办法将数据发送到另一个意图,并且当意图在onActivityResult()
完成时返回数据?
我想做什么:
使用用户输入作为名称
如果找不到任何内容,请启动联系人选择器意图
当联系人选择器返回用户选择的联系人时,仍然是 能够知道用户的初始输入
所以我考虑将用户输入发送到联系人选择器意图并使其返回此数据。
有什么想法吗?
答案 0 :(得分:2)
是的,请查看startActivityForResult
和onActivityResult
,其中您将标识符传递给标识发件人的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。