Android, conversion

Résolu
Bonjour,

Je souhaite récuperer l'information d'une zone de texte, mais j'ai deux erreurs:
- The type new View.OnClickListener(){} must implement the inherited abstract method View.OnClickListener.onClick(View)
-Type mismatch: cannot convert from String to R.string

Voici la partie de code où les erreurs surviennent:
private OnClickListener rechercheListener = new OnClickListener() {
    	public void OnClick(View v)
    	{
    		string nom = nomclient.getText().toString();
    	}
    };


Un peu d'aide ne serait pas de refus. Merci d'avance :)

14 réponses

  1. L'objet pour le setOnClickListener(rechercheListener) est un bouton
    0
    1. Autant pour moi alors, je viens d'apprendre quelques chose merci ;)
      0
      1. Avec le plugin SDK, l'objet "string" existe, il se trouve dans la bibliothèque android.R. S'il a fait un import de cette bibliothèque, c'est normal que l'erreur n'est pas directement soulignée mais c'est l'expression qui l'est.
        0
        1. EN java c'est String mais logiquement le compilateur devrai souligner directement une erreur comme celle la.

          Mettez une majuscule à String.

          Et Que objet est utilisé pour le setOnClickListener(rechercheListener ) ?
          0
          1. En effet, c'était bien ça!
            Merci beaucoup! :D
            0
            1. Peut-être le S de "string nom" qui n'est pas en majuscule? l'objet "string" est différent de l'objet "String".
              0
              1. Aah ^^ C'est un EditText
                0
                1. Re bonjour,

                  Voici la syntaxe que j'utilise pour mettre des listeners sur des boutons :

                  // référencement à l'interface graphique
                  btn = (Button) findViewById(R.id.btn);

                  // Cette fonction est appellée lorsque l'utilisateur clique sur le boutton
                  btn.setOnClickListener(new OnClickListener() {
                  @Override
                  public void onClick(View v) {
                  // ton code
                  }
                  });

                  Si tu fais un copier / coller, ça devrait marcher. Tu dois mettre cette méthode dans ton onCreate de ton activity.

                  Pour la conversion : De quel type est "nomclient" ? EditText ? TextView? Autre?
                  0
                  1. Merci bien :)
                    C'est un EditText
                    0
                  2. Pourquoi utiliser une inner class pour faire ça ? Et non pas une véritable Class déclarée dans son propre .java ! ?
                    0
                  3. Ah ça, je sais pas, je débute, et en suivant quelques tutos sur le net, j'en suis arriver à cette solution... ^^
                    0
                  4. Alors je vous conseil de créer un nouveau fichier java pour déclarer chacune de vos class.

                    Au lien d'avoir

                    btn.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    // ton code
                    }
                    });

                    Vous aurez

                    public class votreClass extends ce qu'elle hérite implements ce que vous voulez
                    {

                    }

                    Et pour fais le set :
                    private votreClass myInstancedeClass;

                    myInstancedeClass = new votreClass()
                    btn.setOnClickListener(myInstancedeClass);

                    De cette manière on évite les fuites de mémoires du a une mauvaise gestion d'un GC capricieux. Et surtout on évite des références non souhaitées ! qui empêche le GC de fonctionner correctement.
                    0
                  5. D'accord, merci du conseil, je vais essayer de faire comme ça alors! :)
                    0
                2. Oui mais c'est que type d'bjet un String ? une textView ? ...
                  0
                  1. Je l'ai déclaré dans la class MainActivity qui hérite d'Activity
                    0
                    1. Quelle est la Class support de nomclient
                      0
                      1. Et sinon, pour la conversion, tu aurais une idée?
                        0
                        1. Le listener s'applique à un bouton
                          Oui, j'ai modifié, merci :) et en débuguant l'erreur ne s'affiche plus.
                          0
                          1. A Quel objet s'applique le listener ?

                            Et le nom de la méthode à surcharger s'appel

                            @Override
                            public void onClick(View v)
                            {
                            }
                            0