设为首页 收藏本站 662p开源网
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 立即注册 找回密码

安卓教程网

新浪微博达人勋

高级会员

2165

积分

713

威望

10

金钱

Rank: 6Rank: 6

积分
2165

社区QQ达人热心会员

发表于 2019-4-2 11:50:53 | 显示全部楼层 |阅读模式
更多
 android.662p.com" target="_blank" class="relatedlink">android开发中有三种主要的方式用于设置View的点击事件,1、创建内部类;2、主类中实现OnClickListener接口;3、使用匿名内部类。这三种方式都用到了OnClickListener接口,只是不同形式而已。其中OnClickListener是监听View点击事件的接口,接口中定义控件被点击时的回调方法OnClick()。View需要在setOnclickListener(OnClickLisener listener)方法的参数中传入OnClickListener接口监听View的点击事件。笔者这里仅仅用了三种Button的方式,以后有新的方式的话会再添加到里面来,因为Button的实现方式比较多,自己常常不知道为啥就忘记了。
一、内部类实现
内部类实现的方法是:创建一个内部类实现OnClickListener接口并重写onClick()方法,在方法中写入点击事件的逻辑。内部类写完之后需要为按钮设置setOnClickListener(Listener listener)属性,在参数中传入之前创建好的内部类对象即可。使用这种点击事件的好处,当按钮较多时可以在onClick(View v)方法中使用Switch语句case属性设置各自不同的点击事件逻辑。
  1. protected void onCreate(Bundle savedInstanceState) {
  2.     super.onCreate(savedInstanceState);
  3.     setContentView(R.layout.activity_main);
  4.     Button button =(Button)findViewById(R.id.button);
  5.     button.setOnClickListener(new MyButton());
  6. }
  7. private class MyButton implements View.OnClickListener{
  8.     @Override
  9.     public void onClick(View view) {
  10.         Toast.makeText(getApplicationContext(),"已点击按钮",Toast.LENGTH_SHORT).show();
  11.     }
  12. }
复制代码
二、匿名内部类实现     当按钮较少或者只有一个按钮时,就不需要再单独创建一个类实现OnClickListener接口了,可以直接创建OnClickListener的匿名内部类传入按钮的setOnClickListener()参数中。
  1. protected void onCreate(Bundle savedInstanceState) {
  2.     super.onCreate(savedInstanceState);
  3.     setContentView(R.layout.activity_main);
  4.     Button button = (Button) findViewById(R.id.button);
  5.     button.setOnClickListener(new View.OnClickListener() {
  6.         @Override
  7.         public void onClick(View view) {
  8.             Toast.makeText(getApplicationContext(), "已点击按钮", Toast.LENGTH_SHORT).show();
  9.         }
  10.     });
  11. }
复制代码

三、Activity本身实现事件接口
除了以上两种方法,还可以在主类中实现该接口,然后重写onClick()方法,这里需要注意的是,button.setOnCLickListener(this);方法中接收了一个参数this,这个this代表的是该Activity的引用。由于Activity实现了OnClickListener接口,所以这里this代表了OnClickListener的引用,在方法中传入this就代表该控件绑定了点击事件的接口。
  1. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  2.     @Override
  3.     protected void onCreate(Bundle savedInstanceState) {
  4.         super.onCreate(savedInstanceState);
  5.         setContentView(R.layout.activity_main);
  6.         Button button = (Button) findViewById(R.id.button);
  7.         button.setOnClickListener(this);
  8.     }
  9.     @Override
  10.         public void onClick(View view) {
  11.             Toast.makeText(getApplicationContext(),"已点击按钮",Toast.LENGTH_SHORT).show();
  12.         }
  13.     }
复制代码





  

新浪微博达人勋

注册会员

104

积分

34

威望

1

金钱

Rank: 2

积分
104
发表于 2019-4-2 11:55:19 | 显示全部楼层
留意一下

新浪微博达人勋

注册会员

98

积分

31

威望

1

金钱

Rank: 2

积分
98
发表于 2019-4-29 17:02:13 | 显示全部楼层
边撸边过
发表于 2019-5-10 10:32:54 | 显示全部楼层
我是个凑数的。。。

新浪微博达人勋

高级会员

819

积分

273

威望

0

金钱

Rank: 4

积分
819
发表于 2019-5-18 02:14:05 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|安卓教程网 ( 粤ICP备12089784号  

GMT+8, 2019-5-27 15:20 , Processed in 0.628570 second(s), 52 queries .

Powered by Discuz X3.1

© 2001-2013 IOS教程网

快速回复 返回顶部 返回列表