Android学习笔记(3)——按钮点击注册事件的四种写法
搬运自本人博客,xge技术博客
http://www.xgezhang.com/android_button_onclick_4_ways.html
Android下,按钮点击事件是在开发过程中经常会写到的东西。这里总结一下常见的四种写法:
界面代码就是一个button控件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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.xgezhang.setonclick4ways.MainActivity"
> < Button android:id = "@+id/button1" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "Button"
/> </ RelativeLayout > |
1.通过匿名内部类实现监听类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
class
MainActivity extends
Activity { @Override protected
void
onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt = (Button) findViewById(R.id.button1); bt.setOnClickListener( new
OnClickListener() { @Override public
void
onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(MainActivity. this ,
"way1" , Toast.LENGTH_SHORT); tst.show(); } }); } } |
2.自定义一个个内部类,实现接口函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public
class
MainActivity extends
Activity { @Override protected
void
onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt = (Button) findViewById(R.id.button1); bt.setOnClickListener( new
MyOnClickListener()); } class
MyOnClickListener implements
OnClickListener{ @Override public
void
onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(MainActivity. this ,
"way2" , Toast.LENGTH_SHORT); tst.show(); } } } |
上述两种方法麻烦之初在于,如果有很多的Button,那么就需要对每一个Button都写一个类,代码比较复杂。
3.让MainActivity实现接口函数,通过switch语句判断R.id,来对不同的Button按钮做出不同的响应。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public
class
MainActivity extends
Activity implements
OnClickListener{ @Override protected
void
onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt = (Button) findViewById(R.id.button1); bt.setOnClickListener( this ); } @Override public
void
onClick(View v) { // TODO Auto-generated method stub switch
(v.getId()) { case
R.id.button1: Toast tst = Toast.makeText(MainActivity. this ,
"way3" , Toast.LENGTH_SHORT); tst.show(); break ; default : break ; } } } |
4.在XML文件中“显式指定按钮的onClick属性,点击按钮时会利用反射的方式调用对应Activity中的click()方法:
XML文件添加一行:
1
|
android:onClick="onClick" |
对应Java代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
class
MainActivity extends
Activity{ @Override protected
void
onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public
void
onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText( this ,
"way4" , Toast.LENGTH_SHORT); tst.show(); } } |
当然,第四种方法也可以通过switch语句判断哪一个Button被点击。
在实际开发过程中,使用最多的是第三种方法。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。