OnClick sur textview
Résolu
Debutant en webmastering
Messages postés
401
Date d'inscription
Statut
Membre
Dernière intervention
-
Debutant en webmastering Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Debutant en webmastering Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
dans le cadre d'un projet, je suis soumis à la contrainte de passer par un onClick sur une textView (contrainte me permettant de ne pas dénaturer l'existant)
en faisant quelques recherches, je suis tombé sur une solution, à savoir :
Il semblerait d'après la doc java que cette fonctionnalité ne soit plus disponible (ou alors je ne l'ai pas trouvée, c'est tout à fait possible), je suis tombé sur du onKeyUp, qui "pourrait" résoudre le problème, mais en appelant ma textView, je n'accède pas à ce genre de fonctionnalités via l'Intellisense.
Auriez-vous une solution pour résoudre ce problème ?
Cordialement, Debutant en webmastering
dans le cadre d'un projet, je suis soumis à la contrainte de passer par un onClick sur une textView (contrainte me permettant de ne pas dénaturer l'existant)
en faisant quelques recherches, je suis tombé sur une solution, à savoir :
//In you Xml add this,android:clickable="true" //in you activity use like this, textView.setOnClickListener(new View.OnClickListener(){ public void onClick(){ } }
Il semblerait d'après la doc java que cette fonctionnalité ne soit plus disponible (ou alors je ne l'ai pas trouvée, c'est tout à fait possible), je suis tombé sur du onKeyUp, qui "pourrait" résoudre le problème, mais en appelant ma textView, je n'accède pas à ce genre de fonctionnalités via l'Intellisense.
Auriez-vous une solution pour résoudre ce problème ?
Cordialement, Debutant en webmastering
A voir également:
- Android textview onclick
- Android recovery - Guide
- Begone android - Accueil - Protection
- À quoi sert google drive sur android - Guide
- Historique presse-papier android - Guide
- Emulateur pokemon android - Guide
6 réponses
Non, le contexte n'a pas changé. C'est juste que this ne représente pas ce que tu attends ;)
Lorsque tu es dans la méthode
Quelques remarques:
- une bonne pratique au niveau du nommage des variables est de garder le type de l'objet, notamment pour les Activity. Quand on regarde ton code, on ne sait pas que Asking_If_Time est de type Activity. Je te propose AskingIfTimeActivity
- une autre bonne pratique est de ne pas utiliser d'underscore. Il faut préférer la notation CamelCase
- Sur CCM, pense à utiliser le bouton "Répondre au sujet" en bleu plutôt que d'ajouter un commentaire
@+
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...
Lorsque tu es dans la méthode
onClick(), tu fais partie d'un object de type
OnClickListener. Donc, à ce niveau, le
thisreprésente cet objet. Tu dois donc utiliser le contexte de l'Activity:
Intent asking_if_time = new Intent(TonActivity.this, Asking_If_Time.class);
Quelques remarques:
- une bonne pratique au niveau du nommage des variables est de garder le type de l'objet, notamment pour les Activity. Quand on regarde ton code, on ne sait pas que Asking_If_Time est de type Activity. Je te propose AskingIfTimeActivity
- une autre bonne pratique est de ne pas utiliser d'underscore. Il faut préférer la notation CamelCase
- Sur CCM, pense à utiliser le bouton "Répondre au sujet" en bleu plutôt que d'ajouter un commentaire
@+
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...
Hello,
Pourquoi dis-tu qu'elle n'est pas disponible?
Pourquoi dis-tu qu'elle n'est pas disponible?
TextViewhéritant de
View, il n'y a pas de souci
avec le peu de connaissances en Java que j'ai, oui ça me semble correct, cependant en continuant de chercher, cela pourrait venir de l'endroit où je mets cette portion de code ; apparemment il faut la mettre au sein même du onCreate comme le montre ce code
mais j'avoue ne pas "visualiser le fonctionnement" de cette façon de faire (peu de patique Android Studio)
public class mainactivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button SuSe = (Button) findViewById(R.id.SuSe); SuSe.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Button Clicked } }); } }
mais j'avoue ne pas "visualiser le fonctionnement" de cette façon de faire (peu de patique Android Studio)
L'attribution d'un OnClickListener peut se faire partout, à condition d'avoir accès au composant graphique associé. Le code que tu montre est correct. N'hésites pas à poster ton code qui pose problème si besoin.
Et attention! Android Studio, c'est l'IDE. Quand tu parles du langage, il faut dire Android ;)
mais j'avoue ne pas "visualiser le fonctionnement" de cette façon de faire (peu de patique Android Studio)Ce n'est pas bien compliqué. Tu as un objet (ici une TextView) et tu lui attribues un paramètre (ici un OnClickListener) à l'aide d'une méthode (ici setOnClickListener).
Et attention! Android Studio, c'est l'IDE. Quand tu parles du langage, il faut dire Android ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour la précision concernant l'IDE et le langage de programmation, quant au code qui ne fonctionnait pas, c'est une erreur de ma part, j'avais oublié de récupérer ma textView au sein d'une variable grâce à findViewById ; cependant en plaçant cette portion de code directement dans le onCreate, le contexte change et donc erreur Cannot resolve constructor Intent voici le code en question :
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_temperature__high); String message = getIntent().getStringExtra("temperature_high_question"); TextView textView = (TextView) findViewById(R.id.Textview_temperature_high_Question); textView.setText(message); TextView textView1 = (TextView) findViewById(R.id.Textview_temperature_high_PC_Consol_Use); textView1.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ //erreur sur le this Intent asking_if_time = new Intent(this, Asking_If_Time.class); startActivity(asking_if_time); } }); }