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测试的时候。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!