Intereting Posts
Сбой приложения при вращении без stackTrace Как разобрать строку измерения и преобразовать ее в значение измерения Как получить идентификатор электронной почты из facebook sdk в приложениях для Android? Проблема ParseApacheHttpClient с Android Marshmallow: не удается найти ссылочный метод SSLSocketFactory.getHttpSocketFactory Получать аудио через Bluetooth в Android Андроидальная камера: Ошибка выдачи результата ResultInfo {who = null, request = 0, result = -1, data = null} к активности Тесты для Android с Appium и Gradle Ошибка android SurfaceFlinger Webview в PDF игнорирует название работы Понимание параметра FragmentRetainInstance (boolean) Android, регистрирующий поставщика услуг безопасности Android. Представления, наложенные на последний кадр полноэкранного видео, не перерисовываются правильно при включении и выключении экрана. Что такое виджет в Android? Можете ли вы развернуть устройство через Gradle из командной строки Растровое изображение слишком велико для загрузки в текстуру

Android: ProgressDialog не показывает

Я пытаюсь создать ProgressDialog для Android-приложения (просто простой показ пользователю, что это происходит, никаких кнопок или чего-то еще), но я не могу понять это правильно. Я прошел через форумы и учебные пособия, а также пример кода, который поставляется с SDK, но безрезультатно.

Это то, что я получил:

btnSubmit.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { (...) ProgressDialog pd = new ProgressDialog(MyApp.this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("Working..."); pd.setIndeterminate(true); pd.setCancelable(false); // now fetch the results (...long time calculations here...) // remove progress dialog pd.dismiss(); 

Я также попытался добавить pd.show(); И перепутался с параметром в new ProgressDialog результате чего ничего не произошло (кроме ошибок, которые выбранный параметр не будет работать), что означает: ProgressDialog никогда не появится. Приложение просто работает, как будто я никогда не добавлял диалог.

Я не знаю, создаю ли я диалог в нужном месте, я немного переместил его, но это тоже не помогло. Может, я не в том контексте? Вышеприведенный код находится внутри private ViewGroup _createInputForm() в MyApp .

Любой намек приветствуется,

Solutions Collecting From Web of "Android: ProgressDialog не показывает"

Вам нужно вызвать pd.show перед началом большого вычисления, а затем вычисление должно выполняться в отдельном потоке. Как только этот поток будет завершен, вы должны вызвать pd.dismiss (), чтобы закрыть диалог prgoress.

Здесь вы можете увидеть пример:

Progressdialog создается и отображается и вызывается поток для выполнения большого вычисления:

 @Override public void onClick(View v) { pd = ProgressDialog.show(lexs, "Search", "Searching...", true, false); Search search = new Search( ... ); SearchThread searchThread = new SearchThread(search); searchThread.start(); } 

И вот нить:

 private class SearchThread extends Thread { private Search search; public SearchThread(Search search) { this.search = search; } @Override public void run() { search.search(); handler.sendEmptyMessage(0); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { displaySearchResults(search); pd.dismiss(); } }; } 

Я даю вам решение для этого, попробуйте это … Сначала определите Диалог прогресса в методе Activity before onCreate ().

Частный прогресс ProgressDialogDialog;

Теперь в методе oncreate у вас может быть кнопка «Любая кнопка», на которой u изменит действие на любое действие. Просто установите индикатор прогресса.

 progressDialog = ProgressDialog.show(FoodDriveModule.this, "", "Loading..."); 

Теперь используйте Thread to Hamndle Progressbar для отображения и скрытия

 new Thread() { public void run() { try { sleep(1500); // do the background process or any work that takes time to see progreaa dialog } catch (Exception e) { Log.e("tag",e.getMessage()); } // dismiss the progressdialog progressDialog.dismiss(); } }.start(); 

Это все!

Диалоговое окно «Прогресс» не отображается, потому что вы должны использовать выделенный поток. Лучшие рекомендации в Android – использовать AsyncTask (настоятельно рекомендуется). См. Также этот ответ .

Это также возможно с помощью AsyncTask . Этот класс создает поток для вас. Вы должны подклассифицировать его и заполнить метод doInBackground(...) .