【发布时间】:2011-07-18 19:19:12
【问题描述】:
我有一个带有 ContextMenu 条目的 ListView,它以 startActivityForResult 启动用户照片库,因此他可以选择一个图像以将其与 ListItem 相关联。选择图像效果很好,我从 Intent 中获取图像 uri 传递给 onActivityResult。
问题是,我没有在 onActivityResult 中获得 ListItem 的 ID。 我试图将它附加到我通过 putExtra 传递给 startActivityForResult 的意图,但我在 onActivityResult 中收到的意图显然不再相同了。
有没有办法将此信息传递给 onActivityResult?这是我的代码:
private void pickPhoto(long itemId) {
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.putExtra(ITEM_ID, itemId);
startActivityForResult(i, PICK_PHOTO_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case PICK_PHOTO_REQUEST:
long itemId = data.getLongExtra(ITEM_ID, 0);
long imageId = ContentUris.parseId(data.getData());
// That here says itemId is 0:
Log.d(TAG, "adding image " + imageId + " to item " + itemId);
setPhoto(itemId, imageId);
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
感谢!
【问题讨论】:
-
您是否检查过设置为 Intent extra 的 itemId 是什么?
-
是的,现在我做到了。它不是 0。所以这里的一切似乎都是正确的。
-
你尝试过使用intent.hasExtra(ITEM_ID);
-
是的,这是错误的。看起来这实际上只是一个新创建的返回所选图像 uri 的意图,而不是启动 Activity 的意图。
标签: android android-activity android-intent