一、onClick
在按键中加入属性onClick,填入要绑定到的方法"bu1"中,因为有两个按键,所以为了区分都添加上id,
注意:每个id的加入都要防止属性的最前面
在MainActivity.java中我们来定义bu1方法,如下图,按键按下,得到id开始进行分支选择,Toast.makeText中的参数分别是,(调用的对象,要打印的内容,时长(填0为默认)),最后要调用show方法。
运行结果
二、自定义类实现按键监听事件接口
自定义一个类,实现View.OnClickListener接口,实现方法onClick,在这里makeText就用不了了,因为它必须和MainActivity产生一些关系
MainActivity.java
package com.example.sct.anjian2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
class Myonclilk implements View.OnClickListener{ //自定义的一个类
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
switch (v.getId()) {
case R.id.button1:
System.out.println("按键一被按下");
// Toast.makeText(this, "按键一被按下", 0).show();
break;
case R.id.button2:
System.out.println("按键二被按下");
// Toast.makeText(this, "按键二被按下", 0).show();
break;
}
}
}
public class MainActivity extends Activity {
Button bu1; //定义局部变量不bu1和bu2
Button bu2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bu1=(Button)findViewById(R.id.button1);//把xml文件中的控件与
//局部变量bu1产生关系,
//并强转为Button类型
bu2=(Button)findViewById(R.id.button2);
bu1.setOnClickListener(new Myonclilk()); //给bu1设置按键监听,
bu2.setOnClickListener(new Myonclilk());
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.sct.anjian2.MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按键1"/>
<Button
android:id="@+id/button2"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按键2"/>
</RelativeLayout>
三、匿名内部类
package com.example.sct.anjian2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
Button bu1;
Button bu2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bu1=(Button)findViewById(R.id.button1);
bu2=(Button)findViewById(R.id.button2);
bu1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Toast.makeText(MainActivity.this, "按键一被按下", 0).show();
}
});
bu2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Toast.makeText(MainActivity.this, "按键二被按下", 0).show();
}
});
}
}
可以看到,使用匿名内部类我们就不用像方法二一样自定义一个监听类了
四、实现接口View.OnClickListener
package com.example.sct.anjian2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener{
Button bu1;
Button bu2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bu1=(Button)findViewById(R.id.button1);
bu2=(Button)findViewById(R.id.button2);
bu1.setOnClickListener(this);
bu2.setOnClickListener(this);
}
@Override
public void onClick(View v) {//实现其中的方法
switch (v.getId()) {
case R.id.button1:
System.out.println("按键一被按下");
Toast.makeText(this, "按键一被按下", 0).show();
break;
case R.id.button2:
System.out.println("按键二被按下");
Toast.makeText(this, "按键二被按下", 0).show();
break;
}
}
}