Я установил прогрессбар для моего поста json и ответа.но это не показ - PullRequest
0 голосов
/ 29 июня 2019

Я отправляю данные на сервер с помощью json. Работает нормально. Но когда я использую прогрессбар, чтобы показать прогресс. Это не работает. мой индикатор прогресса вообще не отображается, но отправка данных и получение ответа по-прежнему

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_leave);    
 progressBar = findViewById(R.id.progressBarLeave);

 submit_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
                progressBar.setVisibility(View.VISIBLE);
            sendData()
       }
     }


    }
        public void sendData(){

    try {
        String api_url = "https://url/";

        String json_request = "{\"test\":\""+1+"\"}";
        Log.e("driver_loc", location_request);
        JSONObject response_data = call_api(api_url, json_request);
        Log.e("response", String.valueOf(response_data));
        if(response_data.getString("status").equals("1")) {
            Toast.makeText(Leave.this, "Success", Toast.LENGTH_LONG).show();
            progressBar.setVisibility(View.GONE);
        }
    } catch (Exception e) {
           Toast.makeText(getApplicationContext(), e.getMessage(),Toast.LENGTH_LONG).show();
        progressBar.setVisibility(View.GONE);
    }
} 

public JSONObject call_api(String api_url, String request_data) {
    try {
        URL url = new URL(api_url);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);
        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));

        writer.write(request_data);
        writer.flush();
        writer.close();
        os.close();

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line = "";
        String response = "";
        while ((line = bufferedReader.readLine()) != null) {
            response += line;
        }

        Log.d("API response", response);

        JSONObject response_data = new JSONObject(response);
        return response_data;

    } catch (Exception e) {
        Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
    }

    return null;
}

Отправка и получение ответа работает нормально, но индикатор выполнения не отображается. Я хочу показать индикатор выполнения, пока не получу ответ от сервера.

1 Ответ

1 голос
/ 29 июня 2019

Попробуйте обернуть sendData в работоспособную задачу.Может просто не показываться, потому что вы зависаете UI

new Handler().post(new Runnable() {
            @Override
            public void run() {
                sendData();
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...