Android onClick按钮单击事件的四种常用写法
这里使用四种onClick单击事件,来实现电话拔号器的DEMO。
XML文件
第一种、匿名内部类:
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Buttonbt_dial=(Button)findViewById(R.id.bt_dial);
bt_dial.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewview){
dialPhone();
}
});
}
第二种、自定义单击事件监听类:
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number=(EditText)MainActivity.this.findViewById(R.id.et_number);
Buttonbt_dial=(Button)findViewById(R.id.bt_dial);
bt_dial.setOnClickListener(newMyListener());
}
privateclassMyListenerimplementsView.OnClickListener{
@Override
publicvoidonClick(Viewview){
dialPhone();
}
}
第三种、Activity继承View.OnClickListener,由Activity实现OnClick(Viewview)方法,在OnClick(Viewview)方法中用switch-case对不同id代表的button进行相应的处理:
publicclassMainActivityextendsActivityimplementsView.OnClickListener{
EditTextet_number;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number=(EditText)MainActivity.this.findViewById(R.id.et_number);
Buttonbt_dial=(Button)findViewById(R.id.bt_dial);
bt_dial.setOnClickListener(this);
}
publicvoidonClick(Viewview){
switch(view.getId()){
caseR.id.bt_dial:
dialPhone();
break;
default:
break;
}
}
}
第四种、在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:
publicvoiddialPhoneMethod(Viewview){
dialPhone();
}
privatevoiddialPhone(){
Stringnumber=et_number.getText().toString().trim();
if(TextUtils.isEmpty(number)){
Toast.makeText(this,"电话号码不能为空",Toast.LENGTH_LONG).show();
return;
}
Intentintent=newIntent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
总结:
第四种写法整个代码中都不用声明button就可以实现button的单击事件。但通常不推荐这样使用,第三种方法是onClick最佳的的使用方式。按钮少的时候用匿名内部类会比较快,比如写demo测试的时候。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!