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 ...
随机推荐
- Linux指令小结
1.apt指令集:是ubuntu中最强大的命令行软件管理工具,用于获取.安装.编译.卸载和查询软件包.还可以检查软件包的依赖关系.在ubunt中下载是根据/etc/apt/sources.list这个 ...
- jsp基础知识
- php 把数字1-1亿换成汉字表述,例如 150 转成 一百五十
/* 额,重新修改了下.现在估计没什么问题了.... */ 直接上实例 写到 千亿上了. /** * @author ja颂 * 把数字1-1亿换成汉字表述,如:123->一百二十三 * @pa ...
- 多模块打包后,扫描不到@controller和@service,实现 ADD DIRECTORY ENTRIES
多模块打包后,扫描不到@controller和@service等Bean. 原因:打包时没有生成目录信息 解决办法: 1.在eclipse或者myeclipse 打包时 勾选 ADD DIRECTOR ...
- https/相对路径,绝对路径
1. htttps HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...
- LeetCode-Remove Duplicates from Sorted Array II
Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For examp ...
- GridView
1.设置间隔变色 css: .oddRow{ background:#fafafa; } js: ,loadComplete:function(){ $("tr.jqgrow:odd&quo ...
- ValidateRequest问题
1,在出现该错误的页面头部的page中加入ValidateRequest="false",那么该页面的任何一次Post提交都不会再验证提交内容的安全性.如: <%@ Page ...
- 症状解决,原因不详的用非默认管理权限账户登录COM注册成功但找不到类型问题
http://social.msdn.microsoft.com/Forums/en-US/11f01ceb-52a4-438f-b7ef-727ce7a3e191/atl-project-in-vs ...
- Tomcat部署Solr4.10.4
前段时间学习solr,兴致勃勃的从官网下载到solr5.3.0最新版本,然后在后期部署时出现了很多问题.首先,4.0到5.0是个大版本更新,下载 的压缩包的文件结构有了很多变化,导致网上很多关于sol ...