две полосы, которые показывают ход игры. Если пользователь получает очки или время истекло и т. Д., Индикаторы прогресса должны быть обновлены:
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). %) для levelUp-бара). Я не могу понять, почему вывод журнала правильный, а чертежи неправильные !? TextView (tv) обновляется правильно! Что тут происходит? Как я могу это исправить?