J'ai créé une mise en page qui contient deux boutons, Suivant et Précédent. Entre les boutons, je génère des vues dynamiques. Donc, lorsque je lance l'application pour la première fois, je souhaite désactiver le bouton "Précédent" car il n'y aura pas de vues précédentes. Je souhaite également désactiver le bouton "Suivant" lorsqu'il n'y a plus de vues à afficher. Est-il possible de désactiver les boutons?
371
Vous ne pouvez pas l'activer ou le désactiver dans votre XML (puisque votre mise en page est définie au moment de l'exécution), mais vous pouvez définir s'il est cliquable au lancement de l'activité avec
android:clickable
.la source
Vous écrivez juste une seule ligne de code dans votre activité
Lorsque vous souhaitez activer le même bouton, il suffit d'écrire
la source
((Button)findViewById(R.id.mybutton)).setEnabled(false);
Oui, il peut être désactivé en XML en utilisant simplement:
la source
android:enabled
quand vous commencez à le taper. (Même à ce jour.)setEnabled
fonctionneEn Java, une fois que vous avez la référence du bouton:
Pour activer / désactiver le bouton, vous pouvez utiliser soit:
Ou:
Puisque vous souhaitez désactiver le bouton depuis le début, vous pouvez utiliser button.setEnabled (false); dans la méthode onCreate. Sinon, à partir de XML, vous pouvez directement utiliser:
Donc:
la source
Dans mon cas,
fonctionne bien et il active et désactive le bouton comme il se doit. Mais une fois que l'état du bouton est désactivé, il ne revient plus jamais à l'état activé, bien qu'il soit cliquable. J'ai essayé d'invalider et d'actualiser l'état de dessin, mais pas de chance.
Si vous ou quelqu'un ayant un problème similaire, ce qui fonctionne pour moi, c'est de redessiner l'arrière-plan. Fonctionne à n'importe quel niveau d'API.
la source
Dans Kotlin, si vous faites référence à la vue des boutons avec id, activez / désactivez le bouton comme
layout.xml
activity.kt
la source
d'abord en xml faire le bouton comme
android:clickable="false"
puis dans votre code, la
oncreate()
méthode inside définit la propriété du bouton commepuis à l'intérieur du bouton, cliquez sur changer le code en
la source
MAUVAISE FAÇON DANS L'ÉCOUTEUR D'UTILISER LA VARIABLE AU LIEU DU PARAMÈTRE !!!
LA BONNE FAÇON:
EDIT: En réponse à @ jeroen-bollen
lorsque la vue est cliquée, l'objet de classe View rappelle la méthode onClick () en l'envoyant comme paramètre lui-même, donc le paramètre de vue null ne devrait pas se produire s'il le fait, c'est une erreur d'assertion cela pourrait se produire par exemple lorsque la classe d'objet View a été détruite entre-temps (pour exemple collecté par GC) ou la méthode a été falsifiée en raison d'un piratage
peu sur instanceof & null
trois mots de l'auteur
SI VOUS DEMANDEZ POURQUOI?
SURTOUT POUR ÉVITER NullPointerException
Un peu plus de code vous fera gagner du temps lors du suivi ultérieur des bogues dans votre code et réduira l'occurrence d'anomalies.
considérez l'exemple suivant:
la source
v
est pasButton
.Avec Kotlin, vous pouvez faire,
la source