Я не знаю, где я ошибаюсь. У меня есть оперативные данные, которые синхронизируются в автономном режиме по запросу, для этого я сделал нераскрытый класс активности, как это:Показать диалог выполнения при вызове вызываемого класса неактивности
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);
}
}
Теперь все работает нормально, класс вызван, данные обновляются. Но единственная проблема заключается в том, что я не могу показать диалог прогресса, который ограничивал бы пользователя при загрузке данных. Извините за такой длинный вопрос, я постарался сделать его как можно короче.
эй, извините за ошибку, я мог бы это сделать, проверяя разные ответы. я обновил код и попробовал ваше решение, но он все еще не показывает диалог. Приложение просто зависает, и если его где-то щелкнуть, появится диалоговое окно Android, спрашивающее, хочу ли я закрыть или дождаться ответа приложения. –
@RishabhLashkari Можете ли вы использовать 'Homepageactivity.this' вместо' getApplicationContext() ' –
Пробовал, не работал :( –