ben gibi kurulumu yapıldıktan bir ToggleButton'a var:Android'in altındaki dinamik ToggleButton metnini nasıl çalışırım?
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());
}
}
});
ve diyalog gibi görünür:
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();
fikirdir: ToggleButton açıksa, eğer tek açılır etiketlerin listesi olan liste listesi iletişim kutusu. Bir etiket seçildiğinde, ToggleButton için yeni textOn olur. ToggleButton kapalıysa (unChecked), metin statik TextOff'a döner.
Sorun şu ki: diyalog giderildikten sonra düğme yeniden çizilmez. Gösterilen metin hala textOn'in önceki değeridir.
Yeniden çizmeyi nasıl zorlayabilirim? filterButton.postInvalidate();
'u denedim, ancak bu yardımcı olmadı.
+1. Cevabınızı kabul etmelisiniz – ohhorob
Awesome! Teşekkürler! :) – zleao
SyncTextState'in çağrılmadığı konusunda kesinlikle haklısınız. Ancak, metni değiştirmek için doğrudan setText (tagNames [hang]) 'ı arayabilirsiniz. – Dandalf