2011-07-18 50 views
0

我有一个带有ContextMenu条目的ListView,它启动用户照片库startActivityForResult,以便他可以选择一个图像将其与ListItem关联。选择图像效果很好,并且我从Intent获取图像uri传递到onActivityResult将startActivityForRes中的ID传递给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!

+0

您是否检查了设置为Intent附加项的itemId? – Suchi

+0

是的,现在我做了。它不是0.所以在这里一切似乎都是正确的。 – jederik

+0

您是否尝试过使用intent.hasExtra(ITEM_ID); – Suchi

回答

0

好吧,我现在将id存储在一个字段变量中,并且工作正常。尽管我对此解决方案并不满意,但如果用户并行启动两个请求,则会失败。更多类型的黑客。