Bonjour à tous !
Je débute dans la programmation java et java pour Android. Je me suis lancé dans la programmation de ma première application pour joindre la pratique à la théorie. La théorie seule pouvant être un poil rébarbative...
Voici mon problème :
J'ai créé une classe A.java et 3 layouts xml (layout1, layout2 et layout3). Chaque layout contient 3 boutons et 2 textviews. Les layouts diffèrent par l'agencement et le contenu des textviews. Les boutons, quant à eux sont identiques (mêmes id).
Dans ma classe A, j'ai déclaré mes boutons et textviews et je les ai récupéré via "findViewById". J'ai défini layout1 pour le lancement de l'activité.
J'ai attribué un onClickListener à chacun des 3 boutons qui me change de layout et implémente mes textviews.
Je lance l'activité...ok. Je clic sur bouton1...ok. Je clic sur bouton2...il ne se passe rien, bouton 3 idem. La seule chose qui fonctionne c'est le retour à la page précédente.
-> Première question : pourquoi mes boutons ne répondent plus après le clic sur le bouton1 et le changement de layout ? Serait-ce parce qu'un bouton ne fonctionne que pour 1 layout donné ?
Dans le doute, j'ai modifié les id de mes boutons (bouton1layout1, bouton2layout1, bouton1layout2, etc) et j'ai désormais 9 boutons que j'ai déclaré dans ma classe A.
Maintenant, au lancement de mon activité, l'appli plante et me renvoie l'exception"NullPointerException" ciblée à la ligne du onClickListener du bouton1layout2.
-> Deuxième question : cette erreur est-elle due au fait que je déclare un onClickListener sur un bouton appartenant à un layout qui n'est pas actif ? A la ligne précédente je récupère le bouton en question via "findViewById" mais ça ne me génère pas d'erreur, est-ce normal ?
-> Dernière question : comment puis-je contourner ce problème ? J'avais éventualisé de créer de nouvelles activités qui seraient ciblées par mes boutons. Cette solution ne me convient pas trop car à l'avenir, le nombre de boutons va considérablement augmenter.
Désolé pour ce roman, j'ai essayé d'être le plus synthétique possible.
Je vous remercie d'avance pour votre aide.
Partager