web-dev-qa-db-fra.com

comment ajouter un événement de clic de bouton dans Android Studio

J'ai donc fait quelques recherches et après avoir défini votre bouton comme objet par le code

private Button buttonname;
buttonname = (Button) findViewById(R.id.buttonnameinandroid) ;

voici mon problème

buttonname.setOnClickListener(this); //as I understand it, the "**this**" denotes the current `view(focus)` in the Android program

alors votre événement OnClick() ...

Problème:

Quand je tape le "ceci", il dit:

setOnClickListener (Android.View.view.OnClickListener) in View cannot be applied to (com.helloandroidstudio.MainActivity)

Je ne sais pas pourquoi?

voici le code du fichier .Java

import Android.widget.Button;
import Android.widget.EditText;
import Android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    private Button btnClick;
    private EditText Name, Date;
    private TextView msg, NameOut, DateOut;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnClick = (Button) findViewById(R.id.button) ;
        btnClick.setOnClickListener(this);
        Name = (EditText) findViewById(R.id.textenter) ;
        Date = (EditText) findViewById(R.id.editText) ;
        msg = (TextView) findViewById(R.id.txtviewOut) ;
        NameOut = (TextView) findViewById(R.id.txtoutName) ;
        DateOut = (TextView) findViewById(R.id.txtOutDate) ;
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

    public void onClick(View v)
    {
        if (v == btnClick)
        {
            if (Name.equals("") == false && Date.equals("") == false)
            {
                NameOut = Name;
                DateOut = Date;
                msg.setVisibility(View.VISIBLE);
            }
            else
            {
                msg.setText("Please complete both fields");
                msg.setVisibility(View.VISIBLE);
            }
        }
        return;

    }
43
user2699451

SetOnClickListener (Android.View.view.OnClickListener) dans View ne peut pas être appliqué à (com.helloandroidstudio.MainActivity)

Cela signifie en d'autres termes (en raison de votre scénario actuel) que votre MainActivity doit implémenter OnClickListener :

public class Main extends ActionBarActivity implements View.OnClickListener {
   // do your stuff
}

Ce:

buttonname.setOnClickListener(this);

signifie que vous voulez affecter un écouteur à votre Button "sur cette instance"-> cette instance représente OnClickListener et pour cette raison votre classe doit implémenter cette interface.

C'est similaire avec la classe d'auditeur anonyme (que vous pouvez également utiliser):

buttonname.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View view) {

   }
});
60
Simon Dorociak
package com.mani.smsdetect;

import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.Button;

public class MainActivity extends Activity implements View.OnClickListener {

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

        //Intialization Button

        btnClickMe = (Button) findViewById(R.id.btnClickMe);

        btnClickMe.setOnClickListener(MainActivity.this);
        //Here MainActivity.this is a Current Class Reference (context)
    }

    @Override
    public void onClick(View v) {

        //Your Logic
    }
}
7
Manikanta Reddy
Button button= (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
    // click handling code
   }
});
4
Mohamed Zidan
public class MainActivity extends AppCompatActivity implements View.OnClickListener

Chaque fois que vous utilisez (ceci) sur des événements de clic, votre activité principale doit implémenter ocClickListener. Android Studio le fait pour vous, appuyez sur les touches alt + enter du mot 'ceci'.

2
Gagandeep

Lorsque vous définissez une OnClickListener (ou un écouteur) de cette façon

btnClick.setOnClickListener(this);

vous devez implement la OnClickListener dans votre Activity

public class MainActivity extends ActionBarActivity implements OnClickListener{
2
codeMagic
package com.mani.helloworldapplication;

import Android.app.Activity;
import Android.os.Bundle;
import Android.support.design.widget.FloatingActionButton;
import Android.support.design.widget.Snackbar;
import Android.support.v7.app.AppCompatActivity;
import Android.support.v7.widget.Toolbar;
import Android.view.View;
import Android.view.Menu;
import Android.view.MenuItem;
import Android.widget.Button;
import Android.widget.TextView;
import Android.widget.Toast;

public class MainActivity extends Activity implements View.OnClickListener {
    //Declaration
    TextView tvName;
    Button btnShow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        //Empty Window
        super.onCreate(savedInstanceState);
        //Load XML File
        setContentView(R.layout.activity_main);

        //Intilization
        tvName = (TextView) findViewById(R.id.tvName);
        btnShow = (Button) findViewById(R.id.btnShow);

        btnShow.setOnClickListener(this);

    }

    @Override
    public void onClick(View v)
    {
        String name = tvName.getText().toString();
        Toast.makeText(MainActivity.this,name,Toast.LENGTH_SHORT).show();
    }
}
2
Manikanta Veeram

Démarrez OnClickListener, mais lorsque vous obtenez la première parenthèse configurée, tapez new, puis View et appuyez sur Entrée. Devrait ressembler à ceci lorsque vous avez terminé:

Button btn1 = (Button)findViewById(R.id.button1);

btn1.setOnClickListener(new View.OnClickListener() {            
    @Override
    public void onClick(View v) {
//your stuff here.
    }
});
2
Carter Ray

// tel que je le comprends, le "ceci" désigne la vue actuelle (focus) dans le programme Android

Non, "ceci" ne fonctionnera que si votre MainActivity référencé par this implémente le View.OnClickListener, qui est le type de paramètre de la méthode setOnClickListener(). Cela signifie que vous devez implémenter View.OnClickListener dans MainActivity.

1
Egor

Votre Activity doit implémenter View.OnClickListener, comme ceci: 

public class MainActivity extends 
Activity implements View.OnClickListener{
// YOUR CODE
}

Et à l'intérieur de MainActivity, remplacez la méthode onClick(), comme ceci: 

@override
public void onClick (View view){
//here YOUR Action response to Click Button 
}
0
Mukhtaar A. Aziz
public class MainActivity extends Activity {

    Button button;

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

        button = (Button) findViewById(R.id.submitButton);
        button.setOnClickListener(new MyClass());

    }

    public class MyClass implements View.OnClickListener {

        @Override
        public void onClick(View v) {

        }

    }
}
0
Salim

dans la classe Activity Java, vous devez d'abord utiliser une méthode pour trouver la vue du bouton en tant que:

btnSum =(Button)findViewById(R.id.button);

après cet ensemble sur click listener 

btnSum.setOnClickListener(new View.OnClickListener() {

et remplacez la méthode onClick pour votre fonctionnalité. J'ai trouvé un exemple pleinement fonctionnel ici: http://javainhouse.blogspot.in/2016/01/button-example-Android-studio.html

0
Gagan