2015-10-06 2 views
0

Я не знаю, где я ошибаюсь. У меня есть оперативные данные, которые синхронизируются в автономном режиме по запросу, для этого я сделал нераскрытый класс активности, как это:Показать диалог выполнения при вызове вызываемого класса неактивности

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); 
    } 

} 

Теперь все работает нормально, класс вызван, данные обновляются. Но единственная проблема заключается в том, что я не могу показать диалог прогресса, который ограничивал бы пользователя при загрузке данных. Извините за такой длинный вопрос, я постарался сделать его как можно короче.

ответ

0

Изменить код блока из этого:

//onclickevent 
    { 
    new refreshdata(); 
    } 

Для этого:

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

Надежда, что помогает !!!

+0

эй, извините за ошибку, я мог бы это сделать, проверяя разные ответы. я обновил код и попробовал ваше решение, но он все еще не показывает диалог. Приложение просто зависает, и если его где-то щелкнуть, появится диалоговое окно Android, спрашивающее, хочу ли я закрыть или дождаться ответа приложения. –

+0

@RishabhLashkari Можете ли вы использовать 'Homepageactivity.this' вместо' getApplicationContext() ' –

+0

Пробовал, не работал :( –

Смежные вопросы