首页 > 解决方案 > 如何为进度对话框编写干代码

问题描述

我正在创建一个应用程序,它从多个 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 吗?

标签: javaandroidprogressdialogasynchttpclient

解决方案


您可以使用 create/Update/cancel 方法为 ProgressDialogUtil 创建一个单独的类,并从您想要的任何活动中调用该方法。

为每个请求调用 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;
        }
    }

}

推荐阅读