Ошибка Android "publishProgress" - PullRequest
       2

Ошибка Android "publishProgress"

0 голосов
/ 02 декабря 2011

Что не так с этим классом? Мой прогрессдиалог отображается, но остается на 0%, затем исчезает, он никогда не получает обновления в процентах

public class AsyncLogin extends AbstractAsync {


    public AsyncLogin(Context context, AsyncCallback mAuthcallback) {
        super(context, mAuthcallback);
    }

    @Override
    protected HashMap<String, String> doInBackground(String... args) {
        ...
        publishProgress(50);

        HashMap<String, String> result = html.download();
        publishProgress(75);
        return result;
    }

    protected void onPreExecute() {
        super.onPreExecute();

        this.progressDialog.setMessage(this.context.getString(R.string.please_wait_logging_in));
        this.progressDialog.show();


        publishProgress(25);
    }


    protected void onProgresUpdate(Integer...  progress)
    {
        super.onProgressUpdate(progress);
        Log.v("max", "set progress" + progress[0]);
        this.progressDialog.setProgress(progress[0]);
    }

    protected void onPostExecute(HashMap map) {
        ...
    }

}


abstract class AbstractAsync extends AsyncTask <String, Integer, HashMap>{


    protected Context context;
    protected ProgressDialog progressDialog;
    protected AsyncCallback mAuthcallback;

    public AbstractAsync(Context context, AsyncCallback mAuthcallback) {
        this.context = context;
        this.mAuthcallback = mAuthcallback;

        progressDialog = new ProgressDialog(context);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setCancelable(false);
        progressDialog.setProgress(0);
    }


    protected void onPreExecute()
    {
        super.onPreExecute();
        progressDialog.setMessage(context.getString(R.string.loadingSomething).toString());
        //dialog.show();
    }

    protected void onProgresUpdate(Integer...  progress)
    {
        super.onProgressUpdate(progress);
        Log.v("max", "set progress" + progress[0]);
        progressDialog.setProgress(progress[0]);
    }


    protected void onPostExecute(HashMap result)
    {
        super.onPostExecute(result);
        progressDialog.dismiss();
    }

}

В журнал ничего не записывается

1 Ответ

3 голосов
/ 02 декабря 2011

Есть ли вероятность того, что ваш уровень журнала ниже, чем подробный?

Есть ли вероятность, что ваш метод никогда не достигнет "publishProgress"?

Кроме того, вы не должны вызывать publishProgress в onPreExecute.Первый должен вызываться в потоке backgorund, который запускает ваш doInBackground, второй вызывается механизмом asynctacsk перед запуском потока bg.

Не могли бы вы опубликовать код AbstractAsync на всякий случай?

РЕДАКТИРОВАТЬ:

onProgresUpdate

на самом деле должно быть написано

onProgressUpdate

Бесплатный Совет: используйте аннотацию @Override, чтобы убедиться, что вы на самом деле что-то перекрывает

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