Aller au contenu

Recommended Posts

Posté(e)

Salut :)

J'me suis lancé à tester des tutos un peu plus complexes que "Hello Wolrd" :

L'appli comporte 1 edit text et 3 button.

Visiblement, tout le tuto se déroule correctement, sauf que dans les propriétés des buttons, je ne parviens pas à trouver la propriété OnClick.

En théorie, c'est simple, il suffit de se placer entre N et P (Next focus up et Panding). Bien bizarrement entre les deux, y a rien.

Est-ce que qqun sait si cette propriété porte un autre nom ?

Mon but est de lui dire quelle procedure réaslier.

Par avance merci :)

Posté(e) (modifié)

tonbouton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

// Ton code ici

}

});

Voila :)

Ps : c'est pas le bon forum...

Modifié par Kuiplo
Posté(e) (modifié)

Ca fonctionne tjs pas :(

Voilà ce que j'ai comme code :

package com.cyrilmottier.android.hellworld;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;


public class HelloWorld extends Activity {

   private EditText text;


   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       text = (EditText) findViewById(R.id.EditText01);
       text.setText("No button pressed");

   }

   // Will be connected with the buttons via XML
   public void myClickHandler(View view) {
       switch (view.getId()) {
       case R.id.Button01:
           text.setText("Button 1 was clicked");
           break;
       case R.id.Button02:
           text.setText("Button 2 was clicked");
           break;

       case R.id.Button03:
           text.setText("Button 3 was clicked");
           break;
       }

           Button03.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
            // Ton code ici
           text.setText("Button 3 was clicked");
       }  
  };         
}

Si j'pouvais trouver l'équivalent de OnClick, j'pourais directement pointer vers la procédure myClickHandler

Si qqun voit où est mon erreur :)

Modifié par djipe
Posté(e)

http://developer.android.com/intl/zh-TW/reference/android/view/View.html#attr_android:onClick

android:onClick

Name of the method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type View. For instance, if you specify android:onClick="sayHello", you must declare a public void sayHello(View v) method of your context (typically, your Activity).

Posté(e)

Tiens, en passant, question bonne pratique tout ça tout ça... Vous utilisez quoi vous généralement ? L'attribut onClick ou la méthode setOnClickListener ?

Je penche pour la seconde méthode, mais je ne suis pas expérimenté dans le dév Android...

Posté(e)
http://developer.android.com/intl/zh-TW/reference/android/view/View.html#attr_android:onClick

android:onClick

Name of the method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type View. For instance, if you specify android:onClick="sayHello", you must declare a public void sayHello(View v) method of your context (typically, your Activity).

Si j'ai bien compris, il faut déclarer l'utilisation du Onclick.

J'ai essayé mais sans succès :(

Est-ce que tu vois ce qui ne vas pas dans mon code ?

Posté(e)

Je te conseille comme l'a dit naholyr d'utiliser le onClickListener qui est bien plus simple et qui fonctionne parfaitement.

C'est d'ailleurs la seule façon de capter les clicks que je connaisse !

Posté(e)
http://developer.android.com/intl/zh-TW/reference/android/view/View.html#attr_android:onClick

android:onClick

Name of the method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type View. For instance' date=' if you specify android:onClick="sayHello", you must declare a public void sayHello(View v) method of your context (typically, your Activity).

[/quote']

Si j'ai bien compris, il faut déclarer l'utilisation du Onclick.

J'ai essayé mais sans succès :(

Est-ce que tu vois ce qui ne vas pas dans mon code ?

bein sans le code de la vue xml....je vais avoir du mal à te dire.... un truc du genre

Posté(e) (modifié)

Tu as ton activity, avec la méthode que tu veux appeler lors du clic :

public class MonActivity extends Activity {

 ...

 public void executeDoncCaSiJeCliqueSurLeBouton(View monBouton) {
   ...
 }

}

Et dans ton layout tu vas définir ça :


ça c'est pour la méthode par déclaration dans le layout, sinon tu peux aussi tout faire dans ton activity :

public class MonActivity extends Activity {

 private OnClickHandler actionAExecuterAuClickSurMonBouton = new OnClickHandler() {
   @Override
   public void onClick(View v) {
     ...
   }
 };

 @Override
 protected void onCreate() {
   ...
   ((Button) findViewById(R.id.monBouton)).setOnClickHandler(actionAExecuterAuClickSurMonBouton);
 }

}

Attention hein, tout ça c'est du code à ne pas copier-coller, il y a sans doute des erreurs de syntaxe hein ^^

Et personnellement je me demande quelle méthode est la plus efficace/maintenable/etc.. Bref la mieux :P Et je pense que la deuxième est plus simple, mais elle est peut-être moins "designer-friendly" que la première.

Modifié par naholyr

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...