Menu

OnClick sur textview [Résolu]

Debutant en webmastering 347 Messages postés lundi 6 juin 2011Date d'inscription 26 décembre 2017 Dernière intervention - 1 juin 2017 à 17:05 - Dernière réponse : Debutant en webmastering 347 Messages postés lundi 6 juin 2011Date d'inscription 26 décembre 2017 Dernière intervention
- 2 juin 2017 à 17:38
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 :

 

//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
Afficher la suite 

Votre réponse

6 réponses

BunoCS 13844 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention - Modifié par BunoCS le 2/06/2017 à 13:58
+1
Utile
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
onClick()
, tu fais partie d'un object de type
OnClickListener
. Donc, à ce niveau, le
this
repré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...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BunoCS
BunoCS 13844 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention - 1 juin 2017 à 18:00
0
Utile
Hello,

Pourquoi dis-tu qu'elle n'est pas disponible?
TextView
héritant de
View
, il n'y a pas de souci
Commenter la réponse de BunoCS
Debutant en webmastering 347 Messages postés lundi 6 juin 2011Date d'inscription 26 décembre 2017 Dernière intervention - 1 juin 2017 à 19:10
0
Utile
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
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)
Commenter la réponse de Debutant en webmastering
BunoCS 13844 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention - 2 juin 2017 à 09:26
0
Utile
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.

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 ;)
Commenter la réponse de BunoCS
Debutant en webmastering 347 Messages postés lundi 6 juin 2011Date d'inscription 26 décembre 2017 Dernière intervention - 2 juin 2017 à 13:18
0
Utile
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);
            }
        });

    }
Commenter la réponse de Debutant en webmastering
Debutant en webmastering 347 Messages postés lundi 6 juin 2011Date d'inscription 26 décembre 2017 Dernière intervention - 2 juin 2017 à 17:38
0
Utile
Je te remercie pour toutes les informations en plus des réponses à mes nombreuses interrogations, ça m'aide grandement
Commenter la réponse de Debutant en webmastering