如何在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事件处理程序的更多细节]