Android onClick按钮单击事件的四种常用写法
这里使用四种onClick单击事件,来实现电话拔号器的DEMO。
XML文件
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:ems="10" android:id="@+id/et_number" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dial_number" android:id="@+id/bt_dial" android:layout_below="@id/et_number" android:layout_alignRight="@id/et_number" android:layout_alignEnd="@id/et_number" />
第一种、匿名内部类:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialPhone(); } }); }
第二种、自定义单击事件监听类:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setOnClickListener(new MyListener()); } private class MyListener implements View.OnClickListener { @Override public void onClick(View view) { dialPhone(); } }
第三种、Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理:
public class MainActivity extends Activity implements View.OnClickListener { EditText et_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setOnClickListener(this); } public void onClick(View view) { switch (view.getId()){ case R.id.bt_dial: dialPhone(); break; default: break; } } }
第四种、在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:
<Button android:onClick="dialPhoneMethod" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dial_number" android:id="@+id/bt_dial" android:layout_below="@id/et_number" android:layout_alignRight="@id/et_number" android:layout_alignEnd="@id/et_number" /> public void dialPhoneMethod(View view){ dialPhone(); } private void dialPhone() { String number = et_number.getText().toString().trim(); if (TextUtils.isEmpty(number)){ Toast.makeText(this, "电话号码不能为空", Toast.LENGTH_LONG).show(); return; } Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + number)); startActivity(intent); }
总结:
第四种写法整个代码中都不用声明button就可以实现button的单击事件。但通常不推荐这样使用,第三种方法是onClick最佳的的使用方式。按钮少的时候用匿名内部类会比较快,比如写demo测试的时候。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
- Android ButtonOnClick事件的写法总结
- 详谈Android中onTouch与onClick事件的关系(必看)
- Android响应事件onClick方法的五种实现方式小结
- Android ListView 子控件onClick正确获取position的方法
- Android onClick方法与setOnClickListener方法对比
- Android使用TextView,设置onClick属性无效的解决方法
- 三种Android单击事件onclick的实现方法
- Android中button实现onclicklistener事件的两种方式
- Android 布局中的android:onClick的使用方法总结
相关文章
详解Android Service与Activity之间通信的几种方式
这篇文章主要介绍了详解Android Service与Activity之间通信的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04android.enableD8.desugaring = false引发问题解决
这篇文章主要为大家介绍了android.enableD8.desugaring = false引发问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03Android编程实现使用webView打开本地html文件的方法
这篇文章主要介绍了Android编程实现使用webView打开本地html文件的方法,结合实例形式分析了Android中webview布局及打开HTML文件的功能实现技巧,需要的朋友可以参考下2017-02-02android中SwipeRefresh实现各种上拉,下拉刷新示例
这篇文章主要介绍了android中SwipeRefresh实现各种上拉,下拉刷新示例,非常具有实用价值,需要的朋友可以参考下。2017-03-03
最新评论