在被调用的非活动类被执行时显示进度对话框

时间:2015-10-06 16:54:29

标签: android progressdialog

我不知道我哪里出错了。 我有一些在线数据,可以根据要求离线同步,为此我创建了一个非活动类,如下所示:

public class RefreshSqlite {

Context context;
private static final String TAG = "REFRESHSQLITE";

private SessionManager session;
private SQLiteHandler db;
HashMap<String, String> sessionuser;

private String  tag_json_arry = "login_req";


public RefreshSqlite(Context context)
{
    this.context = context;
    session = new SessionManager(context);
    sessionuser = session.getUserDetails();
    db = new SQLiteHandler(context);
    db.refreshuser();
    setclasses();
}

private void setclasses() {
    StringRequest strReq = new StringRequest(Request.Method.POST,
            Const.URL_GET_CLASSES, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, response.toString());
            try {
                JSONArray arr = new JSONArray(response.toString());
                for (int i=0; i < arr.length(); i++) {
                   //method to store data
                }
                setperiod();  // IS ANOTHER VOLLEY REQUEST 
            }
            catch (JSONException e)
            {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            Toast.makeText(context, error.toString(), Toast.LENGTH_SHORT).show();
            hideProgressDialog();
        }
    }) {
        @Override
        protected Map<String, String> getParams()
        {
            Map<String, String> params = new HashMap<String, String>();
            \\PARAMETERS ENTERED
            return params;
        }
    };
    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_json_arry);

} 

如您所见,我在此截击请求中呼叫另一个请求。类似地,其他请求被调用,并且需要一段时间(不确定)才能完成。

这是我的活动中使用的方法,我称之为这个类。

public class Homepageactivity extends AppCompatActivity {
private ProgressDialog pDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_homepageactivity);

    pDialog = new ProgressDialog(getApplicationContext());
    pDialog.setMessage("Loading...");
    pDialog.setCancelable(false);

    //onclickevent
      { 
        new refreshdata.execute();
      }

 }
private class refreshdata extends AsyncTask<Void, Void, Boolean>{


    @Override
    protected void onPreExecute() {
        pDialog.show();
        super.onPreExecute();
    }

    @Override
    protected Boolean doInBackground(Void... arg0) {


        new RefreshSqliteteachers(getApplicationContext());

        return true;
    }

    @Override
    protected void onPostExecute(Boolean result) {

        pDialog.dismiss();


        super.onPostExecute(result);
    }

} 

现在一切正常,类调用,数据刷新。但唯一的问题是我无法显示进度对话框,这会在数据加载时限制用户。 很抱歉这么长的问题,我确实试着让它尽可能短。

1 个答案:

答案 0 :(得分:0)

从此处更改代码块:

//onclickevent
  { 
    new refreshdata();
  }

对此:

//onclickevent
  { 
    new refreshdata().execute();
  }

希望有所帮助!!!