将startActivityForResult中的ID传递给onActivityResult

时间:2011-07-18 19:19:12

标签: android android-activity android-intent

我有一个带有ContextMenu条目的ListView,它使用startActivityForResult启动用户照片库,这样他就可以选择一个图像将其与ListItem相关联。拾取图像效果非常好,我将图像uri从Intent传递到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);
    }
}

Thanxalot!

1 个答案:

答案 0 :(得分:0)

好的,我现在将id存储在一个字段变量中,这样可行。虽然我对这个解决方案不是很满意,但是如果用户并行启动两个请求会失败。更多的是黑客攻击。