2013-06-26 6 views
0

В Android-приложении я пытаюсь сделать ProgressBar видимым, когда нажимается кнопка, проводят некоторые процессы, а затем снова становятся невидимыми. Общий обзор методы OnClick моего баттона показан ниже:ProgressBar не будет отображаться, когда я вызываю setVisibility (View.Visible)

ProgressBar bar = (ProgressBar)findViewById(R.id.prog_bar); 
bar.setVisibility(View.VISIBLE); 

... делать некоторые вещи ...

bar.setVisibility(View.INVISIBLE); 

Однако, когда я запускаю код, в то время как процесс, в середине находится завершено, ProgressBar никогда не появляется. Есть идеи?

+1

http: // разработчик .android.com/ссылка/Android/виджет/ProgressBar.html. проверьте это – Raghunandan

+1

@Raghunandan Что касается этой ссылки? 'ProgressBar' должен быть виден по умолчанию. –

+0

Арун, ты уверен, что он правильно установлен в вашем макете? Например. это не покрывается другим взглядом или чем-то еще? Было бы здорово, если бы вы показали нам xml-файл вашего макета. –

ответ

2

OnClick вызывается в основном потоке. Ваши изменения в ProgressBar не будут иметь никакого видимого эффекта, пока ваш метод OnClick не вернется. К тому времени вы уже закончили всю свою работу и снова спрятали ее.

Переместите свою работу в фоновый поток. Мало того, что это сделает ваше приложение более отзывчивым, оно позволит появлению панели прокрутки. (Обратите внимание, что когда ваша работа будет завершена, вам придется скрыть индикатор выполнения из основного потока, а не рабочего потока. Обычно вы отправляете сообщение обработчику для достижения этого.)

+0

Я не был бы уверен в этом, пока не покажет полный код метода 'onClick'. –

+0

Адам, спасибо, я думаю, что это именно то, что происходит. К сожалению, поскольку работа в середине относится к объектам в основном представлении, в ней говорится, что я не могу помещать ее в отдельный поток? –