comment ajouter un clic sur le bouton événement dans android studio

j'ai Donc fait quelques recherches, et après avoir défini vous touche comme un 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

puis OnClick() événement...

Problème:

quand je tape le "ceci", il est écrit:

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

Je ne sais pas pourquoi?

voici le code de la .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
demandé sur nrathaus 2013-11-23 04:04:36

12 réponses

SetOnClickListener (Android.Vue.vue.OnClickListener) en vue ne peut pas être appliquée à la (com.helloandroidstudio.MainActivity)

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

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

Ceci:

buttonname.setOnClickListener(this);

signifie que vous voulez assigner un auditeur pour votre bouton "sur cette instance"-> cette instance représente OnClickListener et pour cette raison, votre classe à implémenter cette interface.

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

buttonname.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View view) {

   }
});
57
répondu Simon Dorociak 2013-11-23 00:13:41
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
répondu Manikanta Reddy 2016-04-12 05:58:21
Button button= (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
    // click handling code
   }
});
3
répondu Mohamed Zidan 2016-09-26 10:52:16

quand vous définissez un OnClickListener (ou l'auditeur) de cette façon

btnClick.setOnClickListener(this);

vous devez implementOnClickListener dans votre Activity.

public class MainActivity extends ActionBarActivity implements OnClickListener{
2
répondu codeMagic 2013-11-23 00:08:15
public class MainActivity extends AppCompatActivity implements View.OnClickListener

chaque fois que vous utilisez (ceci) sur les événements de clic, votre activité principale doit implémenter ocClickListener. Android Studio le fait pour vous, appuyez sur alt+entrer sur le mot "ceci".

2
répondu Gagandeep 2015-11-23 03:47:28
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
répondu Manikanta Veeram 2016-01-04 14:44:19

//si je comprends bien, le "ce" indique la vue actuelle(focus) dans l'android programme

Pas de, "ce" ne fonctionne que si votre MainActivity référencé par this implémente l' View.OnClickListener, qui est le type de paramètre pour l' setOnClickListener() méthode. Cela signifie que vous devez mettre en œuvre View.OnClickListenerMainActivity.

1
répondu Egor 2013-11-23 00:08:05

démarrez votre OnClickListener, mais lorsque vous arrivez à la première mise en place de la parenthèse, 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.
    }
});
1
répondu Carter Ray 2017-06-05 04:32:26
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
répondu Salim 2015-11-23 04:52:51

dans la classe D'activité java, vous aurez besoin d'une méthode pour trouver la vue du bouton comme:

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

après cet ensemble sur Cliquez sur Écouter

btnSum.setOnClickListener(new View.OnClickListener() {

et outrepasser la méthode onClick pour votre fonctionnalité .J'ai trouvé un travail entièrement exemple ici : http://javainhouse.blogspot.in/2016/01/button-example-android-studio.html

0
répondu Gagan 2016-01-29 09:39:53

Activity doit mettre en œuvre View.OnClickListener, comme ceci:

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

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

@override
public void onClick (View view){
//here YOUR Action response to Click Button 
}
0
répondu Mukhtaar A. Aziz 2017-06-05 06:10:19

les Différentes façons de gérer l'événement 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();
        }
    });

[voir cet article pour plus de détails sur les gestionnaires d'événements de bouton]

-1
répondu user7925882 2017-06-05 01:50:11