下面以之前的点好拨号软件来说明按钮点击事件的四种写法,由于其他部分代码一致,所以只post java代码

    1.内部类

 1 package com.example.dailer;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.net.Uri;
 6 import android.os.Bundle;
 7 import android.text.TextUtils;
 8 import android.view.Menu;
 9 import android.view.MenuItem;
10 import android.view.View;
11 import android.widget.Button;
12 import android.widget.EditText;
13 import android.widget.Toast;
14 
15 public class MainActivity extends Activity {
16     private EditText ed1;
17 
18     // Activity代表了一个用户的界面,一个activity对应一个android界面
19     // activity可以创建一个窗口在这个窗口上加载用户的界面 用来跟用户进行交互
20     // 当activity创建的时候就会调用onCreate()方法,在其中做初始化的操作
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         // 首先调用setContentView方法加载页面
25         setContentView(R.layout.activity_main);
26         // 找到要操作的控件对应的java对象 findViewById()的返回值是view对象 为android所有控件的父类
27         Button btn1 = findViewById(R.id.button1);
28         ed1 = findViewById(R.id.editText1);
29         // 给按钮添加点击事件
30         btn1.setOnClickListener(new MyOnClickListener());
31 
32     }
33 
34     public class MyOnClickListener implements android.view.View.OnClickListener {
35         // 当点击这个控件的时候调用这个onclick方法
36         @Override
37         public void onClick(View v) {
38             // TODO Auto-generated method stub
39             // 1.获取用户输入的电话号码
40             String text = ed1.getText().toString();
41             // 2.判断用户输入是否为空 为空:提示输入电话号码 ;非空:打电话
42             if (TextUtils.isEmpty(text)) {
43                 // Toast.makeText(?,?,?):向页面输出一个短暂的提示
44                 // 第一个参数 上下文context,MainActivity就是一个上下文,可以传入当前activity对象
45                 // 第二个参数 要显示的提示信息
46                 // 第三个参数 显示提示的时间长短有两个选择 Toast.LENGTH_SHORT(时间短) Toast.LENGTH_LONG(时间长)
47                 Toast.makeText(MainActivity.this, "请输入电话号码", Toast.LENGTH_SHORT).show();
48             } else {
49                 // intent意图就是对要进行的操作的抽象描述
50                 Intent intent = new Intent();
51                 // 给意图设置操作
52                 intent.setAction(Intent.ACTION_CALL);
53                 Uri data = Uri.parse("tel:"+text);
54                 // 给意图设置携带的数据
55                 intent.setData(data);
56                 // 开启打电话的activity(界面)
57                 startActivity(intent);
58             }
59         }
60 
61     }
62     
63     
64     
65 
66     public boolean onCreateOptionsMenu(Menu menu) {
67         // Inflate the menu; this adds items to the action bar if it is present.
68         getMenuInflater().inflate(R.menu.main, menu);
69         return true;
70     }
71 
72     public boolean onOptionsItemSelected(MenuItem item) {
73         // Handle action bar item clicks here. The action bar will
74         // automatically handle clicks on the Home/Up button, so long
75         // as you specify a parent activity in AndroidManifest.xml.
76         int id = item.getItemId();
77         if (id == R.id.action_settings) {
78             return true;
79         }
80         return super.onOptionsItemSelected(item);
81     }
82 
83 }
使用内部类的方法

    2.匿名内部类

匿名内部类方法

    3.实现接口的方法

 1 package com.example.thirdDailer;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.net.Uri;
 6 import android.os.Bundle;
 7 import android.text.TextUtils;
 8 import android.view.Menu;
 9 import android.view.MenuItem;
10 import android.view.View;
11 import android.view.View.OnClickListener;
12 import android.widget.Button;
13 import android.widget.EditText;
14 import android.widget.Toast;
15 
16 public class MainActivity extends Activity implements OnClickListener {
17 
18     private EditText et1;
19 
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.activity_main);
24         et1 = findViewById(R.id.et1);
25         Button btn1 = findViewById(R.id.btn1);
26         btn1.setOnClickListener(this);
27     }
28 
29     @Override
30     public boolean onCreateOptionsMenu(Menu menu) {
31         // Inflate the menu; this adds items to the action bar if it is present.
32         getMenuInflater().inflate(R.menu.main, menu);
33         return true;
34     }
35 
36     @Override
37     public boolean onOptionsItemSelected(MenuItem item) {
38         // Handle action bar item clicks here. The action bar will
39         // automatically handle clicks on the Home/Up button, so long
40         // as you specify a parent activity in AndroidManifest.xml.
41         int id = item.getItemId();
42         if (id == R.id.action_settings) {
43             return true;
44         }
45         return super.onOptionsItemSelected(item);
46     }
47 
48     @Override
49     public void onClick(View v) {
50         // TODO Auto-generated method stub
51         String number = et1.getText().toString().trim();
52         if (TextUtils.isEmpty(number)) {
53             Toast.makeText(this, "请输入电话号码", Toast.LENGTH_SHORT).show();
54         } else {
55             Intent intent = new Intent();
56             intent.setAction(Intent.ACTION_CALL);
57             intent.setData(Uri.parse("tel:" + number));
58             startActivity(intent);
59         }
60 
61     }
62 }
实现接口

    4.布局文件添加onclick属性

 1 package com.example.forthDailer;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.net.Uri;
 6 import android.os.Bundle;
 7 import android.text.TextUtils;
 8 import android.view.Menu;
 9 import android.view.MenuItem;
10 import android.view.View;
11 import android.widget.Button;
12 import android.widget.EditText;
13 import android.widget.Toast;
14 
15 public class MainActivity extends Activity {
16 
17     private EditText et1;
18     private Button btn1;
19 
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.activity_main);
24         btn1 = findViewById(R.id.btn1);
25         et1 = findViewById(R.id.et1);
26     }
27 
28     @Override
29     public boolean onCreateOptionsMenu(Menu menu) {
30         // Inflate the menu; this adds items to the action bar if it is present.
31         getMenuInflater().inflate(R.menu.main, menu);
32         return true;
33     }
34 
35     @Override
36     public boolean onOptionsItemSelected(MenuItem item) {
37         // Handle action bar item clicks here. The action bar will
38         // automatically handle clicks on the Home/Up button, so long
39         // as you specify a parent activity in AndroidManifest.xml.
40         int id = item.getItemId();
41         if (id == R.id.action_settings) {
42             return true;
43         }
44         return super.onOptionsItemSelected(item);
45     }
46 
47     public void call(View v) {
48         String number = et1.getText().toString().trim();
49         if (TextUtils.isEmpty(number)) {
50             Toast.makeText(this, "请输入电话号码", Toast.LENGTH_SHORT).show();
51         } else {
52             Intent intent = new Intent();
53             intent.setAction(Intent.ACTION_CALL);
54             intent.setData(Uri.parse("tel:" + number));
55             startActivity(intent);
56 
57         }
58 
59     }
60 }
布局文件添加onclick属性

 

 第四种不推荐,如果代码多得话,然后自己脑袋一懵就找不到是什么调用的那个方法