john
john

Reputation: 21

My ProgressDialog is Not Disappearing

I am working on a project in android to upload a file to server using file chooser But there is a problem, when i am Uploading more than 500 kB file. The file is uploaded but My Progress Dialog is not disappearing and if i uploaded file 100 KB it's uploaded to server and i got a message file uploaded successfully. But I'm not able to get server response if i uploaded more than 500 kB file. Please Help me. Thank You.

It's my UploadFile() Methods

private void uploadFile() {
        dialog = ProgressDialog.show(getActivity(), "", "Uploading File...", true);


        // Map is used to multipart the file using okhttp3.RequestBody
        Map<String, RequestBody> map = new HashMap<>();
        long maxLength = 10000000;
        File file = new File(selectedFilePath);
        if(file.length() > maxLength){
            Toast.makeText(getActivity(), "can't upload file if size more than 10mb", Toast.LENGTH_LONG).show();
            dialog.dismiss();

        }else {
            String name = tv_name.getText().toString();
            String email = tv_email.getText().toString();
            // Parsing any Media type file
            RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
            RequestBody requestBody1 = RequestBody.create(MediaType.parse("text/plain"), name);
            RequestBody requestBody2 = RequestBody.create(MediaType.parse("text/plain"), email);
            map.put("file\"; filename=\"" + selectedFilePath + "\"", requestBody);
            map.put("name\"; username=\"" + name + "\"", requestBody1);
            map.put("email\"; email=\"" + email + "\"", requestBody2);

            ApiConfig getResponse = AppConfig.getRetrofit().create(ApiConfig.class);
            Call<ServerResponse> call = getResponse.upload("token", map);
            call.enqueue(new Callback<ServerResponse>() {
                @Override
                public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
                    ServerResponse serverResponse = response.body();
                    if (serverResponse != null) {
                        if (serverResponse.getSuccess()) {
                            Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();

                        } else {
                            Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                    } else {
//                    Log.v("Response", serverResponse.toString());
                    }
                    dialog.dismiss();
                    goToProfile();


                }

                @Override
                public void onFailure(Call<ServerResponse> call, Throwable t) {

                }
            });
        }
    }

Upvotes: 0

Views: 471

Answers (2)

emme
emme

Reputation: 21

Update your onFailure code :

 @Override
 public void onFailure(Call<ServerResponse> call, Throwable t) {
    dialog.dismiss();
 }

Also in onResponse, first you need to dismiss dialog :

   @Override
   public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
       if(progressDialog.isShowing){
         dialog.dismiss();
       }
       ServerResponse serverResponse = response.body();
       if (serverResponse != null) {
           if (serverResponse.getSuccess()) {
               Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
            }
        } else {
//         Log.v("Response", serverResponse.toString());
        }

        goToProfile();


        }

Upvotes: 0

saiRam89
saiRam89

Reputation: 375

When you get response you have to dismiss your progress dialog. Example:

 if (cls_networlconnection.isOnline())
    {
        progressdialog = ProgressDialog.showdialog(this,"Loading");
        APICall();

    }
    else {
        Toast.makeText(getApplicationContext(),UserToastMessage.NETWORKCONNECTION, Toast.LENGTH_LONG).show();
        callNoconnection();
    }

    API Call Success()
    {
       if(progressDialog.isShowing)

         progressDialog.dismiss();

        //your logic

     } 

Upvotes: 2

Related Questions