Как написать сухой код для диалога прогресса - PullRequest
0 голосов
/ 06 декабря 2018

Я создаю приложение, которое отправляет на сервер множество запросов из нескольких фрагментов Activity.я хочу показать ProgressDialog в методах отправки запроса, в этом случае я хочу один раз написать код для отображения ProgressDialog, и я не хочу писать диалог прогресса выполнения для каждого запроса.

это мой DataAccessКласс для подключения к серверу и отправки запроса, чтобы каждый запрос использовал этот класс

public class DataAccess {

    private static AsyncHttpClient client = new AsyncHttpClient();

    public static void get(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {

        client.get(getAbsoluteUrl(url), params, responseHandler);

    }

    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        client.post(getAbsoluteUrl(url), params, responseHandler);
    }

    private static  void  start() {
    }

    private static String getAbsoluteUrl(String relativeUrl) {

        return Settings.serverLink + relativeUrl;
    }
}

Могу ли я показать ProgressDialog в этом классе?

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете создать отдельный класс для ProgressDialogUtil с помощью метода create / Update / cancel и вызывать метод из любого действия, которое вы хотите.

Вызовите метод Show для каждого запроса и отклоните, когда вы получили ответ.

Создать этот класс и вызвать методы ->

public class MyProgressDialog {

    private static ProgressDialog progressDialog;

    public static void show(Context context, int messageResourceId) {
        if (progressDialog != null) {
            progressDialog.dismiss();
        }

        int style;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            style = android.R.style.Theme_Material_Light_Dialog;
        } else {
            //noinspection deprecation
            style = ProgressDialog.THEME_HOLO_LIGHT;
        }

        progressDialog = new ProgressDialog(context, style);
        progressDialog.setMessage(context.getResources().getString(messageResourceId));
        progressDialog.setCancelable(false);
        progressDialog.show();
    }

    public static void dismiss() {
        if (progressDialog != null && progressDialog.isShowing()) {
            progressDialog.dismiss();
            progressDialog = null;
        }
    }

}
...