Индикатор не обновляется - PullRequest
0 голосов
/ 18 февраля 2012

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

     lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
           if (((TextView) view).getText().equals("Zman-New (rus)")){

               progDailog = ProgressDialog.show(testLoading.this, "Getting data", "Loading...",true,true);
               new GetDataTask("stringurl.xml").execute();

              }

Вот getdata

 private class GetDataTask extends AsyncTask<Void, Void, Integer> {
String url;
GetDataTask(String url){
    this.url=url;
}
@Override
protected Integer doInBackground(Void... params) {
        //do all your backgroundtasks 
      intent = new Intent(rusNewsP.testLoading.this, rusNewsTest.rusNewsActivite.class);
      intent.putExtra("url",url);
      startActivity(intent);
      finish();
        return 1;
}

@Override
protected void onPostExecute(Integer result) {

        //finish up ( or close the progressbar )

        //do something with the result
    progDailog.dismiss();
        super.onPostExecute(result);
}
 }

Ответы [ 2 ]

0 голосов
/ 24 июля 2012

Попробуйте запустить Activity Direct из потока UI , так как это будет быстро.
Тем не менее, если вы хотите таким образом, попробуйте запустить его с помощью метода onPostExecute .
Не из doInBackground .

protected void onPostExecute(Integer result) 
{
    //do something with the result
  progDailog.dismiss();
  intent=new Intent(rusNewsP.testLoading.this,rusNewsTest.rusNewsActivite.class);
  intent.putExtra("url",url);
  startActivity(intent);
  finish();
}  

И ... не вызывать super.onPostExecute(result); после отклонения progressDialog .. после завершения doInBackground(Short... params), он вернется непосредственно к onPostExecute Метод, при котором он в первый раз отклонит ProgressDialog и затем выполнит конструктор , который попытается снова отклонить ProgressDialog, который уже отклонен , в результате в неисследованное исключение.

0 голосов
/ 18 февраля 2012

Если вы просто хотите проверить Progress, попробуйте это:

private class Initialize extends AsyncTask<Short, Short, Short> {
            ProgressDialog pd;



@Override
protected void onPreExecute() {
    pd = new ProgressDialog(yourlass.this);
    pd.setMessage("test");
    pd.show();
    super.onPreExecute();
}

@Override
protected Short doInBackground(Short... params) {
    try {
    synchronized (this) {
        wait(2000);
    }
    } catch (InterruptedException ex) {
    }
    return null;
}

@Override
protected void onPostExecute(Short result) {
    pd.dismiss();
    super.onPostExecute(result);
}
}

И не вызывайте startActivity в doInBackground -Методе.Вместо этого вызовите его в OnPostExecute.Операции с графическим интерфейсом не должны выполняться в doInBackground.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...