一.匿名内部内方式
此方法整体看上去简单易懂,个人比较常用
xml布局
java代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 匿名内部内方式设置点击事件
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//在屏幕上显示提示 Toast 吐司
Toast.makeText(MainActivity.this, "匿名内部内方式", Toast.LENGTH_SHORT).show();
}
});
}
}
在多个控件都需要实现事件监听时,可见将匿名对象抽取出来,避免多次创建对象占用资源
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 3.设置按钮点击事件
button.setOnClickListener(onClickListener);
}
// 2.得到 OnClickListener 对象
OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// 可以使用 switch 通过匹配控件id 设置不同的按钮提示不同内容
// view.getId() 得到点击的控件的id
switch (v.getId()) {
case R.id.button:
Toast.makeText(MainActivity.this, "可以使用设置不同内容", Toast.LENGTH_SHORT).show();
break;
case 2:
// 省略
break;
default:
break;
}
}
};
}
二.实现OnClickListener接口重写onClick方法
此方法适合用于多个控件实现点击事件监听
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 3.按钮设置点击事件
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 2.实现OnClickListener接口,然后重写onClick方法
Toast.makeText(MainActivity.this, "实现OnClickListener", Toast.LENGTH_SHORT).show();
}
}
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.找到按钮控件
Button button = (Button) findViewById(R.id.button);
// 3.按钮设置点击事件
button.setOnClickListener(new myOnclickLister());
}
// 2.自己创建类实现OnClickListener接口,然后重写onClick方法
class myOnclickLister implements OnClickListener {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "实现OnClickListener", Toast.LENGTH_SHORT).show();
}
}
}
三.XML种设置按钮的OnClick属性
然后在java代码种建立onClick属性对应名字的方法
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//定义与XML种OnClick属性名字对应的方法 注意在方法参数种加上 View v
public void btn(View v) {
Toast.makeText(MainActivity.this, "设置Onclick属性", Toast.LENGTH_SHORT).show();
}
}
此方法虽然挺方便,代码简洁,但因为方面命名问题不易让他人读懂,且在多个控件种不方法使用。