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

  • Votes
  • Date
  • Date décroissante
  1. A Quel objet s'applique le listener ?

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

    @Override
    public void onClick(View v)
    {
    }
    1. Le listener s'applique à un bouton
      Oui, j'ai modifié, merci :) et en débuguant l'erreur ne s'affiche plus.
      1. Je l'ai déclaré dans la class MainActivity qui hérite d'Activity
        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?
          1. Merci bien :)
            C'est un EditText
          2. Pourquoi utiliser une inner class pour faire ça ? Et non pas une véritable Class déclarée dans son propre .java ! ?
          3. Ah ça, je sais pas, je débute, et en suivant quelques tutos sur le net, j'en suis arriver à cette solution... ^^
          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.
          5. D'accord, merci du conseil, je vais essayer de faire comme ça alors! :)
        2. Peut-être le S de "string nom" qui n'est pas en majuscule? l'objet "string" est différent de l'objet "String".
          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 ) ?
            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.
              1. L'objet pour le setOnClickListener(rechercheListener) est un bouton