При нажатии на кнопку будет загружена панель прогресса

#android #progress-bar

#Android #индикатор выполнения

Вопрос:

Я создал прикладную программу для Android.В этой программе я использую progressbar .. Я помещаю код для progressbar в макет xml. моя проблема в том, что когда я нажимаю на кнопку, после этого загружается только панель прогресса, но она будет отображаться перед нажатием кнопки .. пожалуйста, расскажите какую-нибудь идею..Заранее спасибо..

Комментарии:

1. Я понятия не имею, что вы пытаетесь нам сказать.

Ответ №1:

Установите атрибуты android: visibility и android: id для элемента ProgressBar.

 android:visibility="gone" android:id="@ id/your_prg_bar_id"
  

Для кнопки нажмите добавить атрибут. android: onClick

 android:onClick="showProgressBar"
  

Внутри вашего действия напишите метод showProgressBar, чтобы показать ProgressBar.

 public void showProgressBar(View source){

  progressBar = (ProgressBar) findViewById(R.id.your_prg_bar_id);
  progressBar.setVisibility(View.VISIBLE);
}
  

Ответ №2:

попробуйте это :: AsyncTask позволяет правильно и просто использовать поток пользовательского интерфейса. Этот класс позволяет выполнять фоновые операции и публиковать результаты в потоке пользовательского интерфейса без необходимости манипулировать потоками и / или обработчиками.

Асинхронная задача определяется вычислением, которое выполняется в фоновом потоке и результат которого публикуется в потоке пользовательского интерфейса. Асинхронная задача определяется 3 общими типами, называемыми параметрами, прогрессом и результатом, и 4 шагами, называемыми onPreExecute, doInBackground, onProgressUpdate и onPostExecute

     private class xyz extends AsyncTask<Void, Void, Void> {
        private final ProgressDialog dialog = new ProgressDialog(tranning.this);
        protected void onPreExecute() {
          this.dialog.setMessage("Please Wait...");
          this.dialog.show();
          // put your code which preload with processDialog  
          @Override
          protected Void doInBackground(Void... arg0) {
               // put your code here
               return null;
          }

         @Override
         protected void onPostExecute(final Void unused) {
            if (this.dialog.isShowing()) {
            this.dialog.dismiss();
         }   
      }
  }
  

и используйте это в своем событии нажатия кнопки ::

  new xyz().execute();