Я получаю нулевое значение, когда я пытаюсь загрузить изображение с помощью модернизации - PullRequest
0 голосов
/ 21 апреля 2020

Я получаю нулевое значение при попытке загрузить изображение с помощью Retrofit. На самом деле это происходит только Xioami A2 Lite. Я не понимаю, в чем здесь проблема.

Вот мой код

public void setFinalResponseMutableLiveData(final Context context, Uri fileuri, final PhotoView photoView, final String title) {
    photoView.onPhotoLoading();
    if (NetworkHelper.hasNetworAccess(context)){
        // create upload service client
        File file=new File(FileUtils.getPath(context,fileuri));
        RequestBody requestFile =
                RequestBody.create(
                        MediaType.parse(context.getContentResolver().getType(fileuri)),
                        file
                );

        // MultipartBody.Part is used to send also the actual file name
        MultipartBody.Part body =
                MultipartBody.Part.createFormData("file", file.getName(), requestFile);

        // add another part within the multipart request
        String descriptionString = title;
        RequestBody description =
                RequestBody.create(
                        okhttp3.MultipartBody.FORM, descriptionString);

        RetrofitClient.getInstance().getApi().getImageResponse(description,body).enqueue(new Callback<PhotoUploadResponse>() {
                    @Override
                    public void onResponse(Call<PhotoUploadResponse> call, Response<PhotoUploadResponse> response) {
                        photoView.onPhotoLoaded();
                        if (response.isSuccessful()){
                            finalResponseMutableLiveData.setValue(response.body());
                        }
                        else {
                            new CustomMessage((Activity)context,response.message());
                        }
                    }

                    @Override
                    public void onFailure(Call<PhotoUploadResponse> call, Throwable t) {
                        photoView.onPhotoLoaded();
                        new CustomMessage((Activity)context,t.getMessage());
                        Log.d("CURRENT", "onFailure: "+t.getMessage());
                    }
                });

    }
    else {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                photoView.onPhotoLoaded();
                photoView.onInternetError();
            }
        },100);
    }
}

1 Ответ

0 голосов
/ 21 апреля 2020

На основании вашего ответа на вопрос, откуда исходит ошибка с нулевым значением, проверьте, куда:

setFinalResponseMutableLiveData(final Context context, Uri fileuri, final PhotoView photoView, final String title)

вызывается. В точке вызова убедитесь, что ваша fileuri не равна нулю, установив точку останова и наблюдая за раскрытием значений в отладчике. Поскольку вы определили fileuri как поле, не допускающее обнуления, передача ему нулевого значения приведет к созданию sh приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...