#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();