【1】更改包名及项目名称的方法
【2】按钮点击事件的写法
【2.1】第一种写法:匿名内部类写法
1 package buttonclickdemo.com.example.buttonclickdemo;
2
3 import android.support.v7.app.AppCompatActivity;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.widget.Button;
7 import android.widget.Toast;
8
9 public class MainActivity extends AppCompatActivity {
10
11 @Override
12 protected void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.activity_main);
15
16 /*第一种按钮的点击方式-匿名内部类显示*/
17 Button bt1 = (Button) findViewById(R.id.bt1);
18 bt1.setOnClickListener(new View.OnClickListener() {
19 @Override
20 public void onClick(View view) {
21 Toast.makeText(getApplicationContext(),"我是第一种显示方式",Toast.LENGTH_SHORT).show();
22 }
23 });
24 }
25 }
【2.2】第二种方法-不使用匿名内部类,使用自己的实体类完成点击事件
【2.2.1】使用实体类实现点击事件
①需要将方法抽取出来,callphone();
②实现自己的类MyOnclickListener,实现OnclickListener接口,在override时调用抽取的方法;
1 package buttonclickdemo.com.example.buttonclickdemo;
2
3 import android.net.sip.SipAudioCall;
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.view.View;
7 import android.widget.Button;
8 import android.widget.Toast;
9
10 public class MainActivity extends AppCompatActivity {
11
12 @Override
13 protected void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_main);
16
17
18 /*第二种按钮的点击方式-匿名内部类显示*/
19 Button bt2 = (Button) findViewById(R.id.bt2);
20 bt2.setOnClickListener(new MyClickListener());
21
22 }
23
24 class MyClickListener implements View.OnClickListener{
25
26 @Override
27 public void onClick(View v) {
28 Bt2_click();
29 }
30 }
31
32 private void Bt2_click(){
33 Toast.makeText(getApplicationContext(),"我是第二种显示方式",Toast.LENGTH_SHORT).show();
34 }
35 }
【2.2.2】将局部变量改为全局变量
【2.3】第三种方法:基于【2.2】的改进-多个按键事件的使用;
使用判断不同按键事件的id值,分别调用不同按键处理事件的功能;
【注】在公司,无论是一个按键还是多个按键的实现,都使用该方法;
【源码】
1 package buttonclickdemo.com.example.buttonclickdemo;
2
3 import android.net.sip.SipAudioCall;
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.view.View;
7 import android.widget.Button;
8 import android.widget.Toast;
9
10 import static buttonclickdemo.com.example.buttonclickdemo.R.id.bt1;
11
12 public class MainActivity extends AppCompatActivity implements View.OnClickListener{
13
14 @Override
15 protected void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.activity_main);
18
19 // /*第一种按钮的点击方式-匿名内部类显示*/
20 // Button bt1 = (Button) findViewById(R.id.bt1);
21 // bt1.setOnClickListener(new View.OnClickListener() {
22 // @Override
23 // public void onClick(View view) {
24 // Toast.makeText(getApplicationContext(),"我是第一种显示方式",Toast.LENGTH_SHORT).show();
25 // }
26 // });
27
28 // /*第二种按钮的点击方式-匿名内部类显示*/
29 // Button bt2 = (Button) findViewById(R.id.bt2);
30 // bt2.setOnClickListener(new MyClickListener());
31 //
32 // }
33 //
34 // class MyClickListener implements View.OnClickListener{
35 //
36 // @Override
37 // public void onClick(View v) {
38 // Bt2_click();
39 // }
40 // }
41 //
42 // private void Bt2_click(){
43 // Toast.makeText(getApplicationContext(),"我是第二种显示方式",Toast.LENGTH_SHORT).show();
44 // }
45
46
47 Button bt1 = (Button) findViewById(R.id.bt1);
48 Button bt2 = (Button) findViewById(R.id.bt2);
49 Button bt3 = (Button) findViewById(R.id.bt3);
50 Button bt4 = (Button) findViewById(R.id.bt4);
51
52 bt1.setOnClickListener(this);
53 bt2.setOnClickListener(this);
54 bt3.setOnClickListener(this);
55 bt4.setOnClickListener(this);
56 }
57
58
59
60 @Override
61 public void onClick(View view) {
62 int id = view.getId();
63 switch (id){
64 case R.id.bt1:
65 Toast.makeText(getApplicationContext(),"我是bt1",Toast.LENGTH_SHORT).show();
66 break;
67 case R.id.bt2:
68 Toast.makeText(getApplicationContext(),"我是bt2",Toast.LENGTH_SHORT).show();
69 break;
70 case R.id.bt3:
71 Toast.makeText(getApplicationContext(),"我是bt3",Toast.LENGTH_SHORT).show();
72 break;
73 case R.id.bt4:
74 Toast.makeText(getApplicationContext(),"我是bt4",Toast.LENGTH_SHORT).show();
75 break;
76 default:
77 break;
78 }
79 }
80 }
【2.4】第四种方法-直接在activity_main.xml布局文件中声明该按钮的点击事件对应的方法
【注】该方法在公司没有人使用,因为在测试的时候,其中的该这种方式对应的方法没有被引用,会被删除;
当再次运行该程序的时候,点击按钮就会崩溃;
1 package buttonclickdemo.com.example.buttonclickdemo;
2
3
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.view.View;
7 import android.widget.Toast;
8
9
10 public class MainActivity extends AppCompatActivity {
11
12 @Override
13 protected void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_main);
16 }
17
18 /* 第4中按钮点击方式*/
19
20 public void bt4_onClick(View v) {
21 Toast.makeText(getApplicationContext(), "我是bt4-第四种显示方式", Toast.LENGTH_SHORT).show();
22 }
23
24 }
【3】常见问题
【3.1】在点击事件的参数中不传递参数是不可行的;
【原因】因为在源码中使用的了反射,必须找到此类:View.class;
【3.2】点击事件的方法权限不能改为private权限;
【查看onClick的源码】
因为没有使用暴力反射,所以private权限的方法无法反射访问;如果是暴力反射,则使用的是getDclearMethod();