Identifiant sur les widgets

 

L'identifiant de widget permet à un programme JAVA de retrouver l'instance de ce widget correspondant à cet identifiant durant l'exécution du code.

Donc tous éléments qui seront utiles, exploités dans votre source JAVA doivent avoir un identifiant comme attribut.

Généralement, vous positionnerez un id sur des objets qui peuvent interagir avec l'utilisateur (par exemple un bouton, editeur de texte, ...)

Cela sera plus rare pour des objets statiques comme un label (textview), où l'on se contentera généralement d'indiquer la position à l'écran et cela s'arrêtera là. Mais c'est faisable (un exemple).

 

Déclaration d'un identifiant

La déclaration se faisant dans le fichier xml qui sera interprétré lors du onCreate de votre activité (par exemple main.xml), vous indiquerez l'attribut id dans ce même fichier.

Il y a une norme pour déclarer un id. Le principe est le suivant:

@+id/nom_unique_identifiant

où nom_unique_identifiant représente le nom de votre widget et qui doit être unique !

Par exemple:

android:id="@+id/editText1"

 

Image non trouvée !Le système génère automatiquement un id lorsque l'objet est "dynamique" en utilisant le Graphical Layout sous Eclipse. Vous n'aurez alors qu'à modifier éventuellement le nom de l'identifiant.

Pour un objet static, vous trouverez un exemple dans le chapitre "police" dans lequel, un objet statique reçoit un nom afin de permettre l'utilisation d'une police personnelle sur cet objet.

 

Lire les attributs d'un widget en passant par son identifiant

Maintenant que vous avez déclaré un identifiant sur nos widget, vous pourrez lire les attributs, les modifier en utilisant cet identifiant dans le code.

Vous utiliserons pour cela la fonction findViewById(R.id.nom_unique_identifiant).

Cette fonction retourne l'instance de type View ou null si non trouvé. Il faudra donc éventuellement la caster pour pouvoir ensuite utiliser toutes les méthodes de votre widget.

Par exemple:

Button monBouton=(Button) findViewById(R.id.Button1);

monBouton.getText();

Image non trouvée !Avant de faire appel au findViewById(), assurez vous d'avoir fait appel au setContentView() permettant de charger le layout dans lequel les widgets ont l'identifiant renseigné !

 

Lire l'identifiant d'un widget à partir de son instance

Il existe une métode qui permet de connaître l'identifiant d'un objet. Ce qui pourra être utile dans les listener par exemple. La méthode est tout simplemement getId().