如何在android studio中添加button点击事件

所以我已经做了一些研究,并通过代码将button定义为对象

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

这是我的问题

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

那么你的OnClick()事件…

问题:

当我input“这个”时,它说:

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

我不知道为什么?

这里是.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; } 

View中的SetOnClickListener(Android.View.view.OnClickListener)不能应用于(com.helloandroidstudio.MainActivity)

换句话说,这意味着(由于你当前的情况)你的MainActivity需要实现OnClickListener

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

这个:

 buttonname.setOnClickListener(this); 

意味着你想为你的button分配监听器“在这个实例上” ->这个实例代表OnClickListener ,因此你的类必须实现这个接口。

它与匿名监听器类(也可以使用)类似:

 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 } }); 

当你这样定义一个OnClickListener (或任何监听器)

 btnClick.setOnClickListener(this); 

你需要在Activity implement OnClickListener

 public class MainActivity extends ActionBarActivity implements OnClickListener{ 
 public class MainActivity extends AppCompatActivity implements View.OnClickListener 

无论何时在click事件上使用(this),您的主要活动都必须实现ocClickListener。 Android Studio为你做,按alt +在这个词上input。

//据我所知,“this”表示android程序中的当前视图(焦点)

不,只有当您引用的MainActivity实现了View.OnClickListener (这是setOnClickListener()方法的参数typessetOnClickListener() ,“this”才会起作用。 这意味着你应该在MainActivity实现View.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(); } } 

启动您的OnClickListener,但是当您到达第一个设置圆括号时,inputnew,然后查看,然后按enter键。 当你完成后应该看起来像这样:

 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) { } } } 

在Activity的java类中,你首先需要一个方法来查找button的视图:

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

之后这个设置点击监听器

 btnSum.setOnClickListener(new View.OnClickListener() { 

并为您的function重写onClick方法。我已经find了一个完整的工作示例: http : //javainhouse.blogspot.in/2016/01/button-example-android-studio.html

您的Activity必须实现View.OnClickListener ,如下所示:

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

然后在MainActivity重写方法onClick() ,如下所示:

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

处理button事件的不同方法

 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(); } }); 

[查看这篇文章获得关于button事件处理程序的更多细节]