comment append le bouton click event dans le studio Android

J’ai donc fait des recherches et après vous avoir défini le bouton comme object 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; } 

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 bouton “sur cette instance” -> cette instance représente OnClickListener et pour cette raison, votre classe doit implémenter cette interface.

C’est similaire à la classe d’écoute anonyme (que vous pouvez également utiliser):

 buttonname.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); 
 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 } } 
 Button button= (Button)findViewById(R.id.buttonId); button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { // click handling code } }); 

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

 btnClick.setOnClickListener(this); 

vous devez implement OnClickListener dans votre Activity .

 public class MainActivity extends ActionBarActivity implements OnClickListener{ 
 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 alt + enter sur le mot ‘this’.

// si je comprends bien, le “ceci” indique la vue actuelle (focus) dans le programme Android

Non, “this” ne fonctionnera que si votre MainActivity référencé par this implémente 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 .

 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) { Ssortingng name = tvName.getText().toSsortingng(); Toast.makeText(MainActivity.this,name,Toast.LENGTH_SHORT).show(); } } 

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

 Button btn1 = (Button)findViewById(R.id.button1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //your stuff here. } }); 
 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) { } } } 

Dans la classe Java Activity, vous devez d’abord utiliser une méthode pour trouver la vue du bouton:

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

après cet ensemble sur click auditeur

 btnSum.setOnClickListener(new View.OnClickListener() { 

et remplacer 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

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

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

Et dans MainActivity remplacez la méthode onClick() , comme ceci:

 @override public void onClick (View view){ //here YOUR Action response to Click Button } 

Différentes manières de gérer l’événement du bouton

 Button btn1 = (Button)findViewById(R.id.button1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(context, "Button 1", Toast.LENGTH_LONG).show(); } }); 

[Consultez cet article pour plus de détails sur les gestionnaires d’événements de boutons]