2011-07-18 6 views
0

私はContextMenuエントリを持つListViewを持っています。これはユーザーフォトギャラリーをstartActivityForResultで開始するので、画像を選択してListItemに関連付けることができます。イメージを選ぶことはかなりうまくいきます。私は、インテントからのイメージURIをonActivityResultに渡します。startActivityForResultからonActivityResultへのIDの受け渡し

問題は、私は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); 
    } 
} 

タンスラット!

+0

インテントエクストラに設定されているアイテムIDは何ですか? – Suchi

+0

はい、今やりました。それは0ではないので、ここではすべて正しいと思われる。 – jederik

+0

intent.hasExtra(ITEM_ID)を使用してみましたか。 – Suchi

答えて

0

私はフィールド変数にIDを格納しました。これは機能します。ユーザーが2つの要求を並行して開始すると失敗するため、私はこの解決策について幸せではありません。より多くの種類のハック。

関連する問題