У меня сработало, если я установил setVisibility (), чтобы он был видим перед каждым setProgress ()

ара, которые показывают прогресс игры. Если пользователь получает очки или время истекло и т.д., индикатор прогресса должен быть обновлен:

private TextView tv;
private ProgressBar levelHoldBar;
private ProgressBar levelUpBar;

//...
private void updateViews() {

    // ...
    levelHoldBar.setMax(currentLevel.getThreshold());
    levelHoldBar.setProgress(currentPoints > currentLevel.getThreshold() ? currentLevel.getThreshold() : currentPoints);

    levelUpBar.setMax(nextLevel.getThreshold());
    levelUpBar.setProgress(currentPoints > nextLevel.getThreshold() ? nextLevel.getThreshold() : currentPoints);

    tv.setText(currentPoints+"/"+currentLevel.getThreshold());

    Log.d(TAG, "hold prog/max "+levelHoldBar.getProgress()+"/"+levelHoldBar.getMax());
    Log.d(TAG, "up   prog/max "+levelUpBar.getProgress()+"/"+levelUpBar.getMax());
}

то есть. Выходы:

12-03 17:48:33.918: DEBUG/MainActivity(6829): hold prog/max 20/20
12-03 17:48:33.918: DEBUG/MainActivity(6829): up   prog/max 20/50

Log.d (...) в конце показываетВСЕГДА правильные значения, ноИНОГДА визуальные панели индикаторов выполнения не показывают правильные ходы. Они показывают прогресс, который был установлен ранее, даже если методы получения "max" и "progress" возвращают правильные значения (в этом примере столбец показывает около 20% (вместо 100%) для levelHoldBar и около 2% (вместо 40). %) для уровня Up-bar). Я не могу понять, почему лог-вывод правильный, а рисованные - неправильные !? TextView (ТВ) обновляется правильно! Что тут происходит? Как я могу это исправить?

Ответы на вопрос(15)

Ваш ответ на вопрос