Передача идентификатора из startActivityForResult в onActivityResult - PullRequest
0 голосов
/ 18 июля 2011

У меня есть ListView с записью ContextMenu, которая запускает фотогалерею пользователя с startActivityForResult , поэтому он может выбрать изображение, чтобы связать его с ListItem.Выбор изображения работает довольно хорошо, и я получаю URI изображения из намерения, переданного onActivityResult .

Проблема в том, что я не получаю идентификатор ListItem в onActivityResult.Я пытался прикрепить его к намерению, которое я передаю startActivityForResult через putExtra, но намерение, которое я получаю в 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 голосов
/ 19 июля 2011

Хорошо, теперь я сохранил идентификатор в переменной поля, и это работает.Хотя я не очень доволен этим решением, потому что оно потерпит неудачу, если пользователь начнет два запроса параллельно.Больше вроде взлома.

...