Pen*_*m10 17 android extras android-intent
我有这个代码:
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);
Run Code Online (Sandbox Code Playgroud)
然后回复:
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);
}
Run Code Online (Sandbox Code Playgroud)
的onlineid
变量为空.我怎样才能传递一个值然后再接收它?
编辑
我甚至试过,
Bundle extras = data.getExtras(); // returns null
Run Code Online (Sandbox Code Playgroud)
这是由设计完成的;系统活动不会发回调用它们的额外数据,因此您必须在其他地方管理数据。
幸运的是,该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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不是 Java 程序员,必须有更好的方法来实现 Bundles 的映射,但这是有效的 :)
归档时间: |
|
查看次数: |
9125 次 |
最近记录: |