AsyncTask не показывает ProgressDialog в диалоге - PullRequest
0 голосов
/ 24 ноября 2011

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

private class ClearCache_Task extends AsyncTask<Integer,Integer,Integer>
{
private ProgressDialog progressBar;
private ArrayList<String> m_subfolders;
private final Context m_con;

public ClearCache_Task(Context con, ArrayList<String> subfolders)
{
        m_con = con;
        m_subfolders = subfolders;
    }

    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();
        progressBar = new ProgressDialog(m_con);
        progressBar.setIndeterminate(true);
        progressBar.setCancelable(false);
        progressBar.setMessage("Please wait...");
        progressBar.show();
    }
    @Override
    protected void onPostExecute(Integer result)
    {
        super.onPostExecute(result);
        progressBar.dismiss();
    }
    @Override
    protected Integer doInBackground(Integer... params)
    {
        try
        {
          m_KFileStorage.ClearCache(m_subfolders);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            Log.e(AppTag, e.toString());
        }
        return 0;
    }

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

Извините за вопрос. Я сделал ошибку, вызывая старый код вместо вызова asynctask.:)

0 голосов
/ 24 ноября 2011

как вы прикрепили диалог к ​​активности?

Вот как я это сделал:

В деятельности:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case DIALOG_PROGRESS:
            mProgressDialog = new ProgressDialog(this);
            mProgressDialog.setMessage(Application.string(R.string.dialog_message) + "...");
            mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            mProgressDialog.setCancelable(true);
            mProgressDialog.show();
            return mProgressDialog;
        default:
            return null;
    }
}

В AsyncTask:

@Override
protected void onPreExecute() {
    super.onPreExecute();
    mActivity.showDialog(DIALOG_PROGRESS);
}

Подробнее о диалоге можно прочитать здесь: http://developer.android.com/guide/topics/ui/dialogs.html

...