У меня сработало, если я установил 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 (ТВ) обновляется правильно! Что тут происходит? Как я могу это исправить?