Android学习起步 - Button按钮及事件处理
按钮和文本框算是比较简单的控件了,以下主要讲按钮的事件响应,三种写法(匿名内部类响应事件、外部类响应事件、本类直接响应事件)
点击按钮后文本框中会显示 ”按钮被单击了”,先看效果:

以下是这个界面的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点我" /> <TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="等待单击" /> <!-- 默认未被单击时的提示信息 --> </LinearLayout>
首先看第一种匿名内部类写的监听事件处理方式:
package com.example.helloworld; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends Activity { private Button btn1; //声明按钮对象
private TextView tv1; //声明文本框对象 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_main); //以下代码以匿名内部内的方式处理按钮click事件 //初始化两个控件对象的实例,学过MFC的是不是很熟悉,和GetDlgItem api类似的道理了
btn1 = (Button) findViewById(R.id.button1);
tv1 = (TextView) findViewById(R.id.textView1); //这里设置按钮被Click时的处理函数,是new一个OnClickListener的匿名内部类来实现的
btn1.setOnClickListener(new OnClickListener() { //重载了OnClickListener接口的onClick方法,处理被占击后的事件
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv1.setHint("按钮被单击了");
}
});
}
}
再看外部类的写法,其实很简单了,就再加个类而已:
package com.example.helloworld; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends Activity { private Button btn1; //声明按钮对象
private TextView tv1; //声明文本框对象 //这里声明了一个方法可以访问到TextView的对象
public TextView getTv1() {
return tv1;
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_main); //以下代码以外部类的方式处理按钮click事件 //初始化两个控件对象的实例,学过MFC的是不是很熟悉,和GetDlgItem api类似的道理了
btn1 = (Button) findViewById(R.id.button1);
tv1 = (TextView) findViewById(R.id.textView1); //这里采用外部类MyOnClick实现事件处理
btn1.setOnClickListener(new MyOnClick(this));
}
} //外部类,实现OnClickListener接口
class MyOnClick implements OnClickListener { private MainActivity baseActivity; //该构造函数的作用主要用于访问到TextView对象
public MyOnClick(MainActivity mt) {
baseActivity = mt;
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
baseActivity.getTv1().setHint("按钮被单击了");
}
}
最后是activity类直接继承接口并实现事件响应,也是简单:
package com.example.helloworld; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; //本类直接实现接口OnClickListener
public class MainActivity extends Activity implements OnClickListener { private Button btn1; //声明按钮对象
private TextView tv1; //声明文本框对象 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_main); //以下代码以本类直接实现接口的方式处理按钮click事件 //初始化两个控件对象的实例,学过MFC的是不是很熟悉,和GetDlgItem api类似的道理了
btn1 = (Button) findViewById(R.id.button1);
tv1 = (TextView) findViewById(R.id.textView1); //这里因为是本类直接实现接口,直接给this指针就是了
btn1.setOnClickListener(this);
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv1.setHint("按钮被单击了");
}
}
好了,处理按钮的OnClick事件上面只是实现了三种Java的写法而已,没什么技术含量,同理该按钮的其它事件也可以像上面一样处理。
Android学习起步 - Button按钮及事件处理的更多相关文章
- Android学习之Button按钮在程序运行时全部变大写的处理
问题: 在layout布局文件中,我们命名的按钮名称是“button1”,程序运行过后,在app上显示出来的是“BUTTON1”,先看源代码和效果: 按钮源代码: 运行效果: 解决办法: 方法一: 在 ...
- Android学习笔记-Button(按钮)
Button是TextView的子类,所以TextView上很多属性也可以应用到Button 上!我们实际开发中对于Button的,无非是对按钮的几个状态做相应的操作,比如:按钮按下的时候 用一种颜色 ...
- 我的android学习脚步----------- Button 和监听器setonclicklistener
最基本的学习,设置一个按钮并监听实现实时时刻显示 首先XML布局,在layout中的 activity_main.xml中拖一个Button按钮到相应位置 然后在xml文件中做修改 <Rela ...
- Android Listview中Button按钮点击事件冲突解决办法
今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...
- Android学习 之 ColorStateList按钮文字变色
首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml: <?xml version="1.0" enco ...
- 转 Android学习 之 ColorStateList按钮文字变色
Windows平台VC,对于不同的按钮状态,采用不同的颜色显示文字,实现起来比较复杂,一般都得自绘按钮.但是Android里面实现起来非常方便. 我们首先添加一个ColorStateList资源XML ...
- Android学习起步 - 新建工程及相关
新手起步迷迷糊糊,以下记录迷惑之处,大家共勉!!! 1.创建安卓应用工程 选择Andriod Application Project 点下一步直到完成. 二.下面是新建工程注意的地方 (1)首选删除系 ...
- Android学习笔记——Button
该工程的功能是实现在activity中显示一个TextView和一个Button 以下代码是MainActivity中的代码 package com.example.button; import an ...
- Android点击Button按钮的四种事件监听方法总结
首先我们在activity_main.xml里面先定义一个Button空间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <RelativeLayout xmlns:a ...
随机推荐
- 转载《Android Adapter简单总结》
1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下 ...
- 开发基于C#.NET的mongodb桌面版的应用程序(1)
1.之前没有使用过C#开发过相应的桌面应用程序,现在既然要从零到有进行开发,自然要掌握好C#桌面开发相关的原理与技术,以及站在多类型用户的角度开发具有实际生产意义的mongodb数据库管理软件. 2. ...
- ubuntu kylin 16.04系统的基本安装
系统版本:ubuntu kylin 16.04 硬件状况:500G HDD+120G SSD 已安装操作系统:WIN 10专业版(craked) ——WIN 10系统是装在SSD的第一个盘符内的.以前 ...
- css3新增的属性选择器
使用css选择器,可以实现一个样式对应多个html文档的元素,在{}前面的部分就是"选择器",指明了样式的作用对象. 在CSS中追加了三个属性选择器:[att*=val].[att ...
- 在VS2013中使用Log4net
大致分为3个步骤 引用Log4net
- Ret2Libc 练习(2) -- VirtualProtect
这几天做了NSCTF和GCTF,耽误了几天,今天继续. 这次绕过DEP的方法是利用VirtualProtect函数将shellcode所在的内存属性改成可执行状态就可以绕过DEP了. 首先看一下Vir ...
- Servlet执行流程和生命周期【慕课网搬】
Servlet执行流程(GET方式为例) 首先用户客户端浏览器发出Get方式(点击超链接方式)向浏览器发出请求. 服务器接收到客户端点击超链接,接收到GET请求之后,服务器到WEB.xml中<s ...
- 阿里云 crp kelude远程部署tomcat8 重启tomcat脚本
部署包路径:/usr/local/tomcat/webapps 应用服务启动脚本路径:/usr/local/tomcat/bin/restart.sh 部署授权帐号:tomcat restart.sh ...
- Oracle索引碎片检查及定期重建常用表的索引
背景说明: 今天查阅书籍时,偶然间发现“在对某个索引行执行删除操作时,只是为该行增加了一个删除标记,这个索引行并不会释放它的存储空间,Insert产生的新的索引行也不能被插入到该位置.索引列的修改过程 ...
- 免费提供UG、ProE二次开发、定制化开发服务
免费提供UG.ProE二次开发,定制开发服务. 拥有六年UG.ProE二次开发经验,相关项目经验. 从事过智能设计.计算机图形学相关研究. 联系方式: QQ:1787326383 微信号:begtos ...