setResult (<resultCode>, <Intent>) не работает - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь передать byteArray и просто строку из текущего действия в предыдущий фрагмент.

public void uploadClick (View view) {
    //Send results back to previous screen
    switch (activity.from) {
        case "review" :
            if (activity.mCurrentPhotoPath != null && activity.bytes != null) {
                Intent reviewReturnIntent = new Intent();
                reviewReturnIntent.putExtra(ReviewsFragment.REVIEW_PHOTO_BITMAP, activity.bytes);
                reviewReturnIntent.putExtra(ReviewsFragment.REVIEW_PHOTO_PATH, activity.mCurrentPhotoPath);
                activity.setResult(Activity.RESULT_OK, reviewReturnIntent);
                activity.finish();
            }
            break;

        case "reply" :
            break;

        case "merchant" :
            break;

    }
}

Фрагмент onActivityResult:

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REVIEW_REQUEST) {
        if (resultCode == getActivity().RESULT_OK) {
            if (data != null) {
                returnedBitmap = data.getByteArrayExtra(REVIEW_PHOTO_BITMAP);
                returnedPhotoPath = data.getStringExtra(REVIEW_PHOTO_PATH);

                Bitmap bmp = BitmapFactory.decodeByteArray(returnedBitmap, 0, returnedBitmap.length);
                binding.reviewIV.setImageBitmap(bmp);
                binding.returnedImageLayout.setVisibility(View.VISIBLE);
            }
        }
    }

}

вызов startActivityForResult:

public void uploadClick (View view) {
    Intent uploadPhotoIntent = new Intent(fragment.getContext(), UploadPhotoActivity.class);
    uploadPhotoIntent.putExtra(UploadPhotoActivity.FROM, "review");
    fragment.startActivityForResult(uploadPhotoIntent, ReviewsFragment.REVIEW_REQUEST);
}

Каждый раз, когда я пытаюсь запустить activity.setResult с параметром намерения.Компилятор запускает этот код, но не завершает действие (поэтому я не смог вернуться к предыдущему фрагменту / действию).Я добавил точки останова, и он запускает методы "setResult" и "activity.finish ()".Но, похоже, это не разрушает текущую активность.

Хотя после удаления параметра намерения из метода "setResult" все работает нормально, но в предыдущем фрагменте я получаю ноль, возвращаемыйиз «данных».

Пример:

activity.setResult(Activity.RESULT_OK);

Пытались искать ответы в интернете, но все равно не повезло.Буду очень признателен, и спасибо за чтение.:)

...