Tengo un ToggleButton que se ha configurado como:¿Cómo puedo obtener el texto dinámico de ToggleButton en Android?
final ToggleButton filterButton = (ToggleButton) findViewById(R.id.filterTags);
filterButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (filterButton.isChecked()) {
// pop up the list of tags so the user can choose which to filter by
// once one is chosen, the spinner will be updated appropriately
showDialog(DIALOG_TAGS);
} else {
// going unpressed, set the the spinner list to everything
updateSpinner(db.itemNames());
}
}
});
y el diálogo se parece a:
case DIALOG_TAGS:
final String[] tagNames = db.tagNamesInUse();
dialog = new AlertDialog.Builder(this)
.setItems(tagNames, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
updateSpinner(db.getItemNamesForTag(tagNames[which]));
final ToggleButton filterButton = (ToggleButton) findViewById(R.id.filterTags);
filterButton.setTextOn(tagNames[which]);
dialog.dismiss();
}
})
.setNegativeButton("Cancel", UITools.getDialogCancellingListener())
.create();
La idea es: si el ToggleButton está activada, se hace aparecer una sola lista de diálogo lista de elección que es la lista de etiquetas. Una vez que se elige una etiqueta, se convierte en la nueva entrada de texto para ToggleButton. Si ToggleButton está desactivado (sin marcar), el texto vuelve al TextOff estático.
El problema es que el botón no se está redibujando una vez que el diálogo desaparece. El texto que muestra sigue siendo el valor anterior de textOn.
¿Cómo puedo forzar un redibujado? Intenté filterButton.postInvalidate();
pero eso no ayudó.
+1 esto funciona. Debe aceptar su respuesta – ohhorob
¡Impresionante! ¡Gracias! :) – zleao
Tiene toda la razón al decir que no se llama a syncTextState. Pero, puedes llamar a setText (tagNames [which]) directamente para cambiar el texto. – Dandalf