В Android использование проблем ProgressDialog.show () и ProgressDialog.hide () при получении данных из Интернета - PullRequest
0 голосов
/ 13 апреля 2011

Когда я определяю функции диалога прогресса, такие как

    public static void showLoadingBar(Context context)
{
    dialog=new ProgressDialog(context);
    dialog.setMessage("Please wait");
    dialog.show();
}
public static void hideLoadingBar()
{
    dialog.dismiss();

}

Я хочу использовать его следующим образом:

    UiManager.getInstance().showLoadingBar(this);
    FetchData();
    UiManager.getInstance().hideLoadingBar();

Но я никогда не смогу показать LoadingBar, пока я не прокомментирую UiManager.getInstance () hideLoadingBar (). такая строка

    UiManager.getInstance().showLoadingBar(this);
    FetchData();
    //UiManager.getInstance().hideLoadingBar();

Что это за причина, всегда ProgressBar на экране. Есть ли способ избавиться от этой проблемы?

1 Ответ

1 голос
/ 13 апреля 2011

FetchData() представляется асинхронной операцией.Таким образом, до того, как фактическая операция завершена, функция возвращает и скрывает панель загрузки.Я предлагаю вам использовать AsyncTask .

Чтобы показать диалоговое окно прогресса во время работы AsyncTask, вы можете вызвать show() в onPreExecute() и hide() в onPostExecute().Звоните FetchData() с doInBackground().Это запустит ProgressDialog до того, как AsyncTask выполнит свой фоновый метод, и остановит ProgressDialog после его завершения.

...