由来:常规的写法参见《写一个apk》,每次点击按钮,按钮先查找文本框等元素,然后再操作,其实查找操作是很费时的操作,因此将该定义放到Activity的onCreate中:Oncreate只会执行一次,这样Activity一旦执行,就先创建好控件们了。

第二种方法:通过匿名内部类的方法:就是button.setOnClickListener(new OnClickListener(){

//实现OnClickListener接口

@Override

public void onClick(View v){

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);

}

));

方法三:企业里常用的方法---让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,"文本框被点击了");

}

Android代码学习--点击事件的几种写法的更多相关文章

  1. Android代码规范----按钮单击事件的四种写法

    [前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...

  2. 无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

    1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM ...

  3. Android journey3 @点击事件的4种写法

    对于android布局中的控件,如Button等会有相应的点击事件去响应它所需要的功能,今天我们就以电话拨号器的代码说明下几种点击事件: package com.itheima.phone; impo ...

  4. Android中点击事件的四种写法详解

    Android中点击事件的四种写法 使用内部类实现点击事件 使用匿名内部类实现点击事件 让MainActivity实现View.OnClickListener接口 通过布局文件中控件的属性 第一种方法 ...

  5. Android笔记---点击事件的四种写法

    Android 点击事件的四种写法: 1. 以内部类的形式实现 OnClickListener 接口.定义点击事件 class MainActivity extents Activity{ // .. ...

  6. (转)Ext.Button点击事件的三种写法

    转自:http://maidini.blog.163.com/blog/static/377627042008111061844345/ ExtJs的写法太灵活了,现在收集了关于Button点击事件的 ...

  7. android中点击事件的4种写法

    android中获取到一些控件(比如说按钮)时,一般会为其添加点击事件,android中的点击事件一共有4中写法. 假设在布局文件中声明如下 ....... <Button android:la ...

  8. Android开发系列之按钮事件的4种写法

    经过前两篇blog的铺垫,我们今天热身一下,做个简单的例子. 目录结构还是引用上篇blog的截图. 具体实现代码: public class MainActivity extends Activity ...

  9. Android开发系列之button事件的4种写法

    经过前两篇blog的铺垫,我们今天热身一下,做个简单的样例. 文件夹结构还是引用上篇blog的截图. 详细实现代码: public class MainActivity extends Activit ...

随机推荐

  1. http_load(基于linux平台的一种性能测试工具)

    http_load  是运行在linux操作系统上的命令行测试工具, 用来对网站做压力测试.http_load以并行复用的方式运行,用以测试web服务器的吞吐量和负载.但是它不同于大多数压力测试工具, ...

  2. Distinctive Character

    Distinctive Character Sol bfs寻找最优解. 考虑一开始把他给的状态加进队列里,这些状态的答案都是0. 每次枚举不同的一位拓展,同时要保证这个新状态没有出现过. 效率O(2^ ...

  3. CF704E Iron Man

    CF704E Iron Man 经过不懈(抄题解)努力之后,终于AC了此题. 说起来很简单. 考虑一个链上的情况, 建立直角坐标系. 横坐标是t,纵坐标是距离链开头的距离d m个路径就是一个线段 那么 ...

  4. 回复git@vger.kernel.org的注意事项

    比如回复这封邮件 https://public-inbox.org/git/db2dcf54-8b1c-39b1-579c-425ef158c6a1@kdbg.org/ Reply instructi ...

  5. iOS开发环境搭建 及 编写1个hello world

    参照: https://www.cnblogs.com/ansersion/p/9084460.html 前置条件 : MAC一台 安装xcode,从appstore 下载 xcode,(6G多,考验 ...

  6. Cygwin访问windows磁盘目录

     http://blog.csdn.net/duguduchong/article/details/7680650 Cygwin访问windows磁盘目录 标签: windows磁盘user平台c 2 ...

  7. Flink水印机制(watermark)

    Flink流处理时间方式 EventTime 时间发生的时间,例如:点击网站上的某个链接的时间 IngestionTime 某个Flink节点的source operator接收到数据的时间,例如:某 ...

  8. JetBrains.dotPeek

    Free .NET Decompiler and Assembly Browser Decompile .NET assemblies to C# dotPeek is a free-of-charg ...

  9. Notepad++使用-如何导出/导入配置文件

      复制 :    %APPDATA%\Notepad++ 转载于:https://www.cnblogs.com/dmcs95/p/11278982.html

  10. laravel在路由中设置中间件

    //单个 路由 Route::get( 'admin/admin/index' , [ 'middleware' => 'old', 'uses' => 'Admin\AdminContr ...