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;
}
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) {
}
});
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
}
});
quand vous définissez un OnClickListener
(ou l'auditeur) 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 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".
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();
}
}
//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.OnClickListener
MainActivity
.
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.
}
});
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 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
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
}
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]