由来:常规的写法参见《写一个apk》,每次点击按钮,按钮先查找文本框等元素,而后再操做,其实查找操做是很费时的操做,所以将该定义放到Activity的onCreate中:Oncreate只会执行一次,这样Activity一旦执行,就先建立好控件们了。android
第二种方法:经过匿名内部类的方法:就是button.setOnClickListener(new OnClickListener(){ide
//实现OnClickListener接口布局
@Overridethis
public void onClick(View v){xml
String number = mEditText.getText().toString();对象
Log.i(tag,number); //这个是说,在运行时,log框里面有个tag标签,若是里面输出的是MainActivity,遇到电话号码时候,就输出了;接口
Log.i(tag,“匿名内部类”); //这句打印出来就是,调用到匿名内部类时候,打印输出“匿名内部类”这几个字。事件
//拨打电话号码get
Intent intent = new Intent();it
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
//android里面
startActivity(intent);
}
));
方法三:企业里经常使用的方法---让MainActivity做为实现者,实现按钮注册的点击事件。企业这么写,是由于界面上一般好几十个按钮,若是每一个按钮都用匿名内部类方法写,很不方便;用这种方法,只须要多写几个switch分支便可。
1. button.setOnClickListener(this);
2. 添加mainActivity implements OnClickLIstener()实现接口
3. 增长实现接口的方法
public void onCclick(View v){
//参数v 表明的就是当前被点击的条目 对应的view对象
//下面进行判断,若是v获取的id,就是R.id.bt_dail,就算OK
switch(v.getId()){
case R.id.bt_dail:
//响应按钮的点击事件,具体呢就是把上面的那段代码贴过来,便可
String number = mEditText.getText().toString();
Log.i(tag,number); //这个是说,在运行时,log框里面有个tag标签,若是里面输出的是MainActivity,遇到电话号码时候,就输出了;
Log.i(tag,“匿名内部类”); //这句打印出来就是,调用到匿名内部类时候,打印输出“匿名内部类”这几个字。
//拨打电话号码
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
//android里面
startActivity(intent);
}
}
方法四:在laytout的布局xml中,把按钮的点击事件,绑定到某个方法上:
1. <Button
android:onClick="dail" />
2. 在MainActivity里定义dail方法:
public void dail(View view){
//里面仍是那段代码,放到这里来了
String number = mEditText.getText().toString();
Log.i(tag,number); //这个是说,在运行时,log框里面有个tag标签,若是里面输出的是MainActivity,遇到电话号码时候,就输出了;
Log.i(tag,“匿名内部类”); //这句打印出来就是,调用到匿名内部类时候,打印输出“匿名内部类”这几个字。
//拨打电话号码
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
//android里面
startActivity(intent);
}
咱们知道,全部的控件均可以被click,就拿TextView来讲,须要在布局文件中添加两句话才能够:
<TextView
android:Onclick = "textview_click"
android:clickable = "true"/>
而后在mainActivity中添加该方法:
public void textview_click(View view){
Log.i(tag,"文本框被点击了");
}