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;
}
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) {
}
});
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
}
});
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'.
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{
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();
}
}
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.
}
});
// 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
.
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
}
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 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