gpt4 book ai didi

android - startActivityForResult 和 Intents Extras,似乎 extras 没有被推回

转载 作者:IT老高 更新时间:2023-10-28 23:35:54 24 4
gpt4 key购买 nike

我有这个代码:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(ContactsContract.Contacts.CONTENT_URI);
intent.putExtra(EXTRA_ONLINE_ID, (String) v.getTag());
startActivityForResult(intent, PICK_CONTACT);

然后响应:

public void onActivityResult(int reqCode, int resultCode, Intent data) {


switch (reqCode) {
case (PICK_CONTACT):
if (resultCode == Activity.RESULT_OK) {
try {
Uri contactData = data.getData();
String onlineid = data.getStringExtra(EXTRA_ONLINE_ID);
} catch (Exception e) {
e.printStackTrace();
}
}
break;
}
super.onActivityResult(reqCode, resultCode, data);
}

onlineid 变量为空。如何传递一个值然后接收它?

编辑

我什至试过,

Bundle extras = data.getExtras(); // returns null

最佳答案

这是设计使然;系统 Activity 不会发回调用它们的附加信息,因此您必须在其他地方管理数据。

幸运的是,resultCode 参数完全由您自己控制,这意味着您可以使用它来索引您的数据。

private final int PICK_CONTACT = 0;
private Bundle[] myDataTransfer = { null };

...

Bundle myData = new Bundle();
myData.putString(EXTRA_ONLINE_ID, (String) v.getTag());
myDataTransfer[PICK_CONTACT] = myData;
// create intent and all
startActivityForResult(intent, PICK_CONTACT);

...

public void onActivityResult(int reqCode, int resultCode, Intent data) {
if (resultCode == PICK_CONTACT) {
Bundle myData = myDataTransfer[resultCode];
String onlineid = myData.getString(EXTRA_ONLINE_ID);
}
}

我不是 Java 程序员,必须有更好的方法来实现 Bundles 的映射,但这很有效 :)

关于android - startActivityForResult 和 Intents Extras,似乎 extras 没有被推回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com