Android отображает диалоги при загрузке URL

1

Моя проблема действительно странная. Сценарий довольно прост: я не хочу показывать диалог прогресса, пока моя активность загружает содержимое URL-адресов.

Сначала я попытался отобразить ProgressDialog только сам по себе, без каких-либо специальных функций внутри. Хорошо работает. Но как только я добавил функцию, которая загружает URL-адреса, программа сначала загрузила эти URL-адреса, а затем отобразила индикатор выполнения. Вот мой код:

progDialog = new ProgressDialog(this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setMessage("Logging in ...");
progDialog.show();

client = new GameClient(context, universe, username, password);
client.login();

progDialog.dismiss();

Ничего особенного. Но по какой-то причине активность сначала делает "login-part", а затем пытается отобразить диалог, но он все равно не появляется...

Не могли бы вы дать мне подсказки для решения проблемы?

Теги:
load
dialog

2 ответа

1
Лучший ответ

Используйте класс ProgressDialog, чтобы показать его.

/*****************************************
 * AsyncTask Class to Parse and Display
 ******************************************/
class AsyncTaskClassName extends AsyncTask<Void,Void, Void>{
    ProgressDialog progressDialog = null;

    /* ***********************************
     * Pre-Execute Method 
     * ********************************** */
    @Override
    protected void onPreExecute() {
        progressDialog = util.getProgressDialog(ActivityClassName.this, "Please wait...", "Parsing List...    ");
           //ActivityClassName -> The Name of the Activity Class you want to show ProgressDialog
        // progressDialog.hide();
        progressDialog.show();

        /* Do your Pre-Execute Configuration */
    }

    /* ***********************************
     * Execute Method 
     * ********************************** */
    @Override
    protected Void doInBackground(Void... arg0) {
        /* Do yourxec Task ( Load from URL) and return value */
        return null;
    }

    /* ***********************************
     * Post-Execute Method 
     * ********************************** */
    @Override
    protected void onPostExecute(Void result) {
        progressDialog.dismiss();

                    /* Do your Post -Execute Tasks */
    }
  • 0
    Этот вопрос старый, но все же вы сделали все возможное, спасибо :) Это определенно решит проблему, а также.
2

Вам нужно запустить логин в отдельном потоке, чтобы он не блокировал поток пользовательского интерфейса, как этот

...
progDialog.show();

new Thread(new Runnable() {
    @Override
    public void run() {
        client = new GameClient(context, universe, username, password);
        client.login();

        progDialog.dismiss();
    }
}).start();

или использовать AsyncTask. См. Http://developer.android.com/resources/articles/painless-threading.html.

  • 0
    Хм, спасибо, уже получил эту идею, но я закодировал ее неправильно. Спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню