Почему не установленVisibility работает на Android ProgressBar?
Было бы неплохо, если бы ProgressBar можно было уйти, пока это не понадобится. Есть ли проблема с использованием setVisibility.progressBar в applyMenuChoice? Проблема с использованием setVisibility.progressBar в PrintStatusTask(). Execute() заключается в том, что он вызывает сбой приложения во время выполнения.
public class Controller extends Activity {
private ProgressBar progressBar;
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.controller);
progressBar = (ProgressBar)findViewById(R.id.progressBar);
...
private boolean applyMenuChoice(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuStatus:
progressBar.setVisibility(View.VISIBLE);
new PrintStatusTask().execute();
progressBar.setVisibility(View.GONE);
...
Ответы
Ответ 1
progressBar.setVisibility(View.VISIBLE);
new PrintStatusTask().execute();
progressBar.setVisibility(View.GONE);
Это то, что вы делаете:
1. Показать прогрессBar
2. Создайте задачу в отдельной ветке
3. Скройте progressBar
Для выполнения всего этого процесса потребуется всего несколько миллисекунд. Вам нужно скрыть индикатор выполнения в методе onPostExecute()
класса PrintStatusTask.
Вам нужно понять, что метод execute()
AsyncTask - это вызов, который выполняет другой поток и не ждет его заканчивать. Такого рода точка AsyncTask.
Ответ 2
Вы пытаетесь скрыть ProgressBar
в AsyncTask
? Если это так, это должно быть сделано в onPreExecute
или onPostExecute
(как и все команды UI).
Кроме того, используйте что-то вроде этого:
private void toggleProgressBar() {
switch (progressBar.getVisibility()) {
case View.GONE:
progressBar.setVisibility(View.VISIBLE);
break;
default:
progressBar.setVisibility(View.GONE);
break;
}
}