Utilisation de ButterKnife
Résolu/Fermé
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
-
Modifié le 4 avril 2017 à 16:33
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 5 avril 2017 à 11:01
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 5 avril 2017 à 11:01
A voir également:
- Utilisation de ButterKnife
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Désolé l'utilisation de la base de données a expiré epic games - Forum Jeux vidéo
- Dossier en cours d'utilisation - Forum Windows 8 / 8.1
12 réponses
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
4 avril 2017 à 09:16
4 avril 2017 à 09:16
Hello,
Un bon point, quand même, l'utilisation de
J'essaye d'utiliser cette librairiePlutôt que d'essayer d'utiliser, pourquoi tu ne lis pas la doc? Je ne sais pas où tu as trouvé ce
@Bind.
Un bon point, quand même, l'utilisation de
@BindViewte dispense effectivement le
findViewById().
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 13:08
4 avril 2017 à 13:08
Donc j'ai juste à déclarer
ButterKnife.bind(this);dans le
onCreatede l'activité et remplacer
final View startActivity_animation_affichage = findViewById(R.id.startActivity_conteneurScrollView);par
@BindView startActivity_conteneurScrollView?
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 13:28
4 avril 2017 à 13:28
Ah non... attends... je déclare
@BindView(R.id.startActivity_conteneurScrollView) ScrollView startActivity_conteneurScrollView;dans la déclaration de l'activité, puis
ButterKnife.bind(this);dans le
onCreatede l'activité, et enfin je remplace
final View startActivity_animation_affichage = findViewById(R.id.startActivity_conteneurScrollView);par
final View startActivity_animation_affichage = startActivity_conteneurScrollView;... c'est ça ?
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 14:20
4 avril 2017 à 14:20
Mouais... sauf que... ça fonctionne pour la
Puis pour la
Enfin pour le
Android Studio m'indique que
ScrollViewmais pas pour mon bouton qui suit. Donc, j'ai déclaré dans la classe :
/* Déclaration de la classe "Start". */
public class Start extends AppCompatActivity
{
/* Déclaration des différentes vues qui seront utilisées dans l'activité de la classe "Start". */
@BindView(R.id.startActivity_conteneurScrollView) ScrollView startActivity_conteneurScrollView;
@BindView(R.id.startActivity_boutonConnexion) Button startActivity_boutonConnexion;
Puis pour la
ScrollViewj'ai écrit :
/* Association de l'animation "apparition.xml" à la création de la constante "startActivity_animation" (de type "Animation"). */
final Animation startActivity_animation = AnimationUtils.loadAnimation(this, R.anim.apparition);
/* Association de la vue "startActivity_conteneurScrollView" à la création de la constante "startActivity_animation_affichage" (de type "View"). */
final View startActivity_animation_affichage = startActivity_conteneurScrollView;
/* Association des deux constantes. */
startActivity_animation.setFillAfter(true);
/* Lancement de l'animation. */
startActivity_animation_affichage.startAnimation(startActivity_animation);
Enfin pour le
Buttonj'ai écrit :
/* Association du bouton "startActivity_boutonConnexion" à la création de la constante "startActivity_boutonConnexion" (de type "Button"). */
final Button startActivity_boutonConnexion = startActivity_boutonConnexion;
/* Déclaration de ce qu'il doit se passer au clique du bouton. */
startActivity_boutonConnexion.setOnClickListener(new View.OnClickListener()
{
Android Studio m'indique que
startActivity_boutonConnexionn'est pas utilisé... bah pourtant si.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 14:24
4 avril 2017 à 14:24
Ah... autant pour moi. J'avais donné le même ID à la constante ET au bouton. ^^ Android Studio m'a crié dessus en disant "pas bien le redondant".
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
4 avril 2017 à 14:25
4 avril 2017 à 14:25
Presque ;)
Ta dernière ligne ne sert à rien ;)
Ta dernière ligne ne sert à rien ;)
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 15:14
4 avril 2017 à 15:14
Quelle dernière ligne ?
Par contre je ne comprends pas le fonctionnement de
J'ai essayé de tout déclarer dans le
Et si c'est à faire en deux parties je ne vois pas comment faire le lien...
Par contre je ne comprends pas le fonctionnement de
@OnClick... tout doit-être déclaré dans le
onCreatede l'activité ? Ou comme
@BindViewil y a une partie à déclaré dans la classe mère ?
J'ai essayé de tout déclarer dans le
onCreatede l'activité mais ça ne fonctionne pas :
@OnClick(R.id.startActivity_boutonConnexion) void startActivity_boutonConnexion_contante
{
/* Création du lien "lien_Start_Index" entre les classes "Start" et "Index". */
Intent lien_Start_Index = new Intent(Start.this, Index.class);
/* Lancement de la translation. */
startActivity(lien_Start_Index);
}
Et si c'est à faire en deux parties je ne vois pas comment faire le lien...
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
Modifié le 4 avril 2017 à 15:32
Modifié le 4 avril 2017 à 15:32
@BindView sert à binder une variable membre sur un composant graphique -> à faire dans la déclaration des membres
@OnClick permet de lier un composant graphique à une méthode qui sera appelé lors de l'appui sur le composant.
Un petit exemple ci-dessous.
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
@OnClick permet de lier un composant graphique à une méthode qui sera appelé lors de l'appui sur le composant.
Un petit exemple ci-dessous.
public class StartActivity extends AppCompatActivity { //UI @BindView(R.id.startActivity_conteneurScrollView) ScrollView startActivity_conteneurScrollView; //LIFE-CYCLE ////////////////////////// @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.start_activity); ButterKnife.bind(this); //ici, tu peux utiliser startActivity_conteneurScrollView } //USER INTERACTION ////////////////////////// @OnClick(R.id.startActivity_boutonConnexion) public void onConnexionClick() { /* Création du lien "lien_Start_Index" entre les classes "Start" et "Index". */ Intent lien_Start_Index = new Intent(StartActivity.this, IndexActivity.class); /* Lancement de la translation. */ startActivity(lien_Start_Index); } }
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 16:13
4 avril 2017 à 16:13
Ah d'accord. Il fallait mettre
Et pour en revenir à cette ligne de code inutile pour les
@OnClickau même niveau de code que
protected void onCreate(Bundle savedInstanceState) {et pas dans
protected void onCreate(Bundle savedInstanceState) {... c'est ça que je n'avais pas compris. Merci pour cet éclaircissement. Par contre c'est normal qu'il m'indique que
onConnexionClickn'est pas utilisé ?
Et pour en revenir à cette ligne de code inutile pour les
@BindViewje ne vois pas de quelle ligne tu parles dans mon code.
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
4 avril 2017 à 16:31
4 avril 2017 à 16:31
Oui, c'est normal car la méthode n'est pas appelée par toi. C'est une callback qui sera appelée lors de l'appui sur le bouton.
Je parlais de ce message, la ligne suivant n'a pas de raison d'être
Je parlais de ce message, la ligne suivant n'a pas de raison d'être
final View startActivity_animation_affichage = startActivity_conteneurScrollView;
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
>
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
4 avril 2017 à 16:43
4 avril 2017 à 16:43
Euh bah si elle est utile cette ligne... elle fait partie de mon animation :
Sinon comment je fais pour faire le lien avec l'animation. ^^
//!\\ Apparition de l'activité. //!\\
/* Association de l'animation "apparition.xml" à la création de la constante "startActivity_constanteAnimation" (de type "Animation"). */
final Animation startActivity_constanteAnimation = AnimationUtils.loadAnimation(this, R.anim.apparition);
/* Association de la vue "startActivity_conteneurScrollView" à la création de la constante "startActivity_constanteAffichage" (de type "View"). */
final View startActivity_constanteAffichage = startActivity_conteneurScrollView;
/* Association des deux constantes. */
startActivity_constanteAnimation.setFillAfter(true);
/* Lancement de l'animation. */
startActivity_constanteAffichage.startAnimation(startActivity_constanteAnimation);
Sinon comment je fais pour faire le lien avec l'animation. ^^
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 16:21
4 avril 2017 à 16:21
P.S. : J'ai trouvé un lien qui répertorie pas mal de librairies utiles : https://blog.engineering.publicissapient.fr/2014/10/22/android-les-bibliotheques-utiles/ Pas mal pour conserver une micro encyclopédie des librairies externes à connaître. :-)
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
4 avril 2017 à 16:32
4 avril 2017 à 16:32
Un post datant de 2014...je n'ai pas regardé mais c'est sûrement obsolète :P
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 16:37
4 avril 2017 à 16:37
Tu exagères. :-) Cela donne quand même un bon aperçu des librairies.
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
4 avril 2017 à 16:38
4 avril 2017 à 16:38
En conclusion Butter Knife simplifie pas mal de choses. :-) Dommage que l'on ne puisse pas tout simplifier comme ça. J'aurais pu aussi de la même manière simplifier l'animation si cela avait été possible.
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
4 avril 2017 à 17:10
4 avril 2017 à 17:10
Voilà.
A noter qu'il y a aussi le même principe pour les paramètres d'Intent: Dart
N'hésites pas à passer ce topic en résolu si c'est le cas.
A noter qu'il y a aussi le même principe pour les paramètres d'Intent: Dart
N'hésites pas à passer ce topic en résolu si c'est le cas.
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
>
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
4 avril 2017 à 22:48
4 avril 2017 à 22:48
Dernière chose, concernant
final View startActivity_animation_affichage = startActivity_conteneurScrollView;, je ne peux pas la supprimer cette ligne puisqu'elle fait partie de mon animation. Si je la supprime mon animation crash.
//!\\ Apparition de l'activité. //!\\
/* Association de l'animation "apparition.xml" à la création de la constante "startActivity_constanteAnimation" (de type "Animation"). */
final Animation startActivity_constanteAnimation = AnimationUtils.loadAnimation(this, R.anim.apparition);
/* Association de la vue "startActivity_conteneurScrollView" à la création de la constante "startActivity_constanteAffichage" (de type "View"). */
final View startActivity_constanteAffichage = startActivity_conteneurScrollView;
/* Association des deux constantes. */
startActivity_constanteAnimation.setFillAfter(true);
/* Lancement de l'animation. */
startActivity_constanteAffichage.startAnimation(startActivity_constanteAnimation);
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
>
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
5 avril 2017 à 09:27
5 avril 2017 à 09:27
Si tu supprimes la ligne, et que tu remplaces les
Mais bon, c'est un "faux problème".
startActivity_animation_affichagepar
startActivity_conteneurScrollView, ça doit marcher pareil, non?
Mais bon, c'est un "faux problème".
YameFAZE
Messages postés
201
Date d'inscription
mardi 24 avril 2012
Statut
Membre
Dernière intervention
14 mars 2021
>
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
5 avril 2017 à 11:01
5 avril 2017 à 11:01
J'ai essayé mais ça ne fonctionne pas pour la suppression de la ligne. Android n'arrive pas à faire le lien. Donc je laisse comme ça. C'est pas dramatique. :-)