dos barras que muestra el progreso de un juego. Si el usuario obtiene puntos o el tiempo está activo, etc. progressBars debe actualizarse:android progressBar no actualiza la vista de progreso/dibujable
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());
}
ie. Salidas:
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
El Log.d (...) al final muestra SIEMPRE los valores correctos, pero VECES las barras visuales de los ProgressBars no muestran los progesses correctas. Muestran los progresos que se habían establecido previamente incluso si los captadores para "máximo" y "progreso" devuelven los valores correctos (en el ejemplo, la barra muestra aproximadamente 20% (en lugar de 100%) para el nivelHoldBar y aproximadamente 2% (en lugar de 40 %) para el nivel Arriba-barra). No puedo entender, ¿por qué la salida de registro es correcta, pero los datos descartables son incorrectos? ¡TextView (tv) se actualiza correctamente! ¿Que está pasando aqui? ¿Cómo puedo arreglar eso?
Bien, preguntas tontas primero - 1) estás actualizando en el hilo de la interfaz de usuario, y 2) no tienes funciones de dibujo personalizadas en ninguna parte para nada? – EboMike
sí, estoy ejecutándolo en el hilo de la interfaz de usuario y no tengo ningún dibujo personalizado. Utiliza siempre la misma pila de llamadas para actualizar y, a veces, las barras se actualizan y otras no. Esto es extraño ^^ – Stuck
Bien. Algo es sospechoso ¿Qué sucede cuando simplificas tu actividad para, por ejemplo, modificar la barra de progreso a "valor anterior + 1" cada vez que presionas un botón? ProgressBars es muy simple, por lo que debemos pasar de una configuración simple a la que tiene actualmente y averiguar en qué punto se rompe. – EboMike