Подтвердить что ты не робот

Почему не установлен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);
            ...
4b9b3361

Ответ 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;
    }
}