下面以之前的点好拨号软件来说明按钮点击事件的四种写法,由于其他部分代码一致,所以只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 }
第四种不推荐,如果代码多得话,然后自己脑袋一懵就找不到是什么调用的那个方法