web-dev-qa-db-fra.com

Comment définir l'événement onClick dans un ImageButton?

J'ai créé un bouton d'image dans Android, mais rien ne se passe lorsque je clique sur ce bouton. J'ai défini toutes les propriétés mais toujours rien ne se passe. Alors pouvez-vous m'aider là où je me trompe.

fichier XML

    <?xml version="1.0" encoding="utf-8"?>
    <AbsoluteLayout
        Android:id="@+id/widget39"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <EditText
        Android:id="@+id/editText1"
        Android:layout_width="fill_parent"
        Android:layout_height="50dp"
        Android:layout_x="0dp"
        Android:layout_y="3dp" />

    <ImageButton
        Android:id="@+id/search"
        Android:layout_width="40dp"
        Android:layout_height="41dp"
        Android:layout_x="312dp"
        Android:layout_y="10dp"
        Android:clickable="true"
        Android:onClick="onClick"
        Android:background="@drawable/search" />

    />
    </AbsoluteLayout>

search.Java

public class SearchData extends Activity {
ImageButton search; 

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_data);
        search =(ImageButton)findViewById(R.id.search);
        search.setOnClickListener(new View.OnClickListener()   {             
               public void onClick(View v)  {               
                try {
                    ConnectService();
                } catch (Exception e) {
                    e.printStackTrace();                    
                }               
               }  
             });
    }
4
rajeev patidar
<ImageButton
        Android:id="@+id/search"
        Android:layout_width="40dp"
        Android:layout_height="41dp"
        Android:layout_x="312dp"
        Android:layout_y="10dp"
        Android:clickable="true"
        Android:onClick="onClick"
        Android:background="@drawable/search" />

Selon votre code xml, vous devez supprimer la ligne Android:onClick="onClick" de votre bouton Image Xml.Elle fonctionnera alors car la priorité 1 ira toujours à la méthode onClick que vous avez mentionnée au format xml.

4
Boopathi

Essayez d'implémenter l'auditeur Onclick à votre activité

 <ImageButton
        Android:id="@+id/search"
        Android:layout_width="40dp"
        Android:layout_height="41dp"
        Android:layout_x="312dp"
        Android:layout_y="10dp"
        Android:clickable="true"
        Android:onClick="onClick"
        Android:background="@drawable/search" />
    />

Aucun problème avec ce bouton

Changez votre activité comme ci-dessous

   ***search.Java***
    public class SearchData extends Activity implements OnClickListener{
    ImageButton search; 

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_search_data);
            search =(ImageButton)findViewById(R.id.search);
            search.setOnClickListener(this);

  }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.search:
                  try {
                        ConnectService();
                    } catch (Exception e) {

                        e.printStackTrace();                    
                    }              
            break;
        }
    }

}

J'espère que ça va marcher. si vous avez un doute sur la mise en œuvre, faites le moi savoir

1
Madhu

Vous avez besoin de quelque chose comme ça:

dans votre XML, voyez la valeur de Android:onClick et Android:id:

<ImageButton
    Android:id="@+id/search"
    Android:layout_width="40dp"
    Android:layout_height="41dp"
    Android:layout_x="312dp"
    Android:layout_y="10dp"
    Android:clickable="true"
    Android:onClick="myFunctionName"
    Android:background="@drawable/search" />

Dans votre fichier.Java Voir le nom de la fonction myFunctionName et les actions à prendre lorsque l'événement est déclenché dans le cas case R.id.search:

public class SearchData extends Activity {
ImageButton search; 

  public void myFunctionName(View view) {
    switch (view.getId()) {
      case R.id.search:
        try {
          ConnectService();
        } catch (Exception e) {
          e.printStackTrace();                    
        } 
     break;
    }
  }

  protected void onCreate(Bundle savedInstanceState) {
           // code
  }

}
1

Supprimer Android:onClick="onClick" de xml

1
Fahim

dans Fichier XML (par exemple activity_main.xml)

<ImageButton
Android:id="@+id/search"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/home"
...
/>

dans Fichier Java (par exemple activity_main.Java)

    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       // initiate and perform click event on button's
       ImageButton search = (ImageButton)findViewById(R.id.search);
       search.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Toast.makeText(getApplicationContext(),"search button is Clicked", Toast.LENGTH_LONG).show();
           }
       });
    }
1
Amir Hosseinzadeh