Android入门(四):链接接口组件和程序代码
编写好layout中的接口组件之后,下一步就是编写控制接口组件的程序代码。上一章,我们使用了三种接口组件,在使用者输入性别和年龄之后点击“健康建议按钮”,程序会读取用户所填入的性别和年龄,然后显示判断结果,因此接口组件和程序代码之间必须能够互动并完成下列 3件事:
1.btnDoSug按钮被点击后,程序开始运行判断的程序代码;
2.程序代码必须能够读取edtSex和edtAge这两个EditText组件中的字符串;
3.程序代码必须将最后的判断结果显示在txtResult组件中。
(一)设置Button的click事件listener
事件listener就是用来处理某一个组件事件的处理程序。当我们单击某一个组件时,就会触发相应组件的click事件,该事件会传到组件的click事件listener中进行处理。Android就是利用各种事件处理程序来运行用户的操作,而事件处理程序在Android中就称为事件listener。要设置Button组件的click事件listener需要完成下列步骤:
1.建立一个OnClickListener对象。
OnClickListener本身就是一个接口,当我们要建立一个OnClickListener的对象时,必须实现其中的onClick方法。例如下面的程序:
Button.OnClickListener btnDoSugOnClick = new Button.OnClickListener()
{
public void onClick(View v)
{
//点击按钮后执行的程序
}
};
2.所有定义在接口布局文件中的组件经过编译之后都会在R.java文件中,我们可以利用findViewById()从文件中取得接口组件
Button btnDoSug = (Button)findViewById(R.id.btnDoSug);
我们把取得的btnDoSug组件存入一个同名的Button对象(名字可以不一样)。
3.把第一个步骤中建立的OnClickListener 对象,设置给第二个步骤中的Button对象的click事件listener。
btnDoSug.setOnClickListener(btnDoSugOnClick);
(二)整合代码
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class MainActivity extends Activity { private Button btnDoSug;
private EditText edtSex, edtAge;
private TextView txtResult; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btnDoSug = (Button)findViewById(R.id.btnDoSug);
edtSex = (EditText)findViewById(R.id.edtSex);
edtAge = (EditText)findViewById(R.id.edtAge);
txtResult = (TextView)findViewById(R.id.txtResult); btnDoSug.setOnClickListener(btnDoSugOnClick);
} private Button.OnClickListener btnDoSugOnClick = new Button.OnClickListener(){ public void onClick(View view){
//点击按钮后执行的代码
String strSex = edtSex.getText().toString();
int iAge = Integer.parseInt(edtAge.getText().toString()); String strSug = "结果:";
if(strSex.equals("男"))
{
if(iAge < 28)
strSug += "力量训练";
else if(iAge > 33)
strSug += "打太极拳";
else
strSug += "慢跑";
}
else
{
if(iAge < 28)
strSug += "慢跑";
else if(iAge > 33)
strSug += "瑜伽";
else
strSug += "瘦身运动";
} txtResult.setText(strSug);
}
};
}
Android入门(四):链接接口组件和程序代码的更多相关文章
- Android入门(四)UI-创建自定义控件
原文链接:http://www.orlion.ga/441/ 一.引入布局 iphone应用顶部会有一个标题栏,我们可以模仿着做一个,但是如果我们的程序中很多个活动都需要这样的标题栏,如果 每一个活动 ...
- Android Telephony分析(七) ---- 接口扩展(异步转同步)
本文是基于上一篇<Android Telephony分析(六) —- 接口扩展(实践篇)>来写的.上一篇介绍的接口扩展的方法需要实现两部分代码:1. 从APP至RIL,发送请求:2. 从R ...
- Android入门(三):使用TextView、EditText 和Button接口组件
我使用的IDE是Android Studio 2.1,虽然使用Eclipse也可以进行Android的开发,但是网上的大神大都推荐Android Studio,愿意了解的朋友可以参考知乎上关于Andr ...
- 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...
- Spring Boot入门(四):开发Web Api接口常用注解总结
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...
- 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity
问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...
- Android入门(八):使用RadioGroup 和RadioButton组件建立单选清单
这一章,我们学习RadioGroup 和RadioButton组件,我们新建一个项目,编码过程与前几章的项目类似. 1.建立字符串资源文件strings.xml: <resources> ...
- Android入门(七):Spinner下拉式菜单组件
对于手机和平板电脑的应用程序来说,打字是非常不方便的操作方式,比较好的方式就是列出一组选项让用户挑选,这样就可以避免打字的麻烦.使用Spinner下拉菜单组件需要完成以下几个步骤: 1.建立选项列表, ...
- Android入门(五):程序架构——MVC设计模式在Android中的应用
刚刚接触编程的的人,可能会这样认为:只要代码写完了能够跑起来就算完工了.如果只是写一个小程序,“能够跑起来”这样的标准也就可以了,但是如果你是在公司进行程序的开发,那么仅仅让程序成功的跑起来是不行的, ...
随机推荐
- [Unity3D] Normal map、Diffuse map 和 Speculer map
Normal map : Normal map (法线贴图) 它的作用是模拟出高模上的一些细节纹理,特别是将高模上的圆滑和粗糙度投射到低模上,让低模也有高模的效果. 因为高模的面数非常多,导入引擎后电 ...
- 小白搭建一个网站(DouPHP)
1)安装phpStudy_2014_setup.1413444920.exe 并启动数据库 2)将软件自带的WWW实例替换成我发的这个模板(DouPHP),网上也可以下载. 能找到更好模板的也可以不用 ...
- [Network] 计算机网络基础知识总结
计算机网络学习的核心内容就是网络协议的学习.网络协议是为计算机网络中进行数据交换而建立的规则.标准或者说是约定的集合.因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标 ...
- JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- 数据结构快速回顾——平衡二叉树 AVL (转)
平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树.1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵 ...
- 字符串专题:map POJ 1002
第一次用到是在‘校内赛总结’扫地那道题里面,大同小异 map<string,int>str 可以专用做做字符串的匹配之类的处理 string donser; str [donser]++ ...
- hihoCoder 1196 高斯消元·二
Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...
- cookie 和session 区别
会话技术: Cookie:客户端技术.将数据保存在客户端浏览器上.Cookie是有大小和个数的限制. Session:服务器端技术.将数据保存在服务器端.Session没有大小和个数限制.Sessio ...
- quartz 线程问题
2个任务一起使用quartz来调度,但是有一个任务总是会莫名其妙的暂停掉,排查了下,原来组内成员在写JOB任务时候,在JOB中写了个while(true) { 执行业务 休眠10分钟} 导 ...
- C++ 基础知识复习(六)
操作系统部分: 79. 操作系统的最小调度单位:线程. 线程thread,进程process.一个进程至少包含一个线程,主线程,main thread. 80. 资源的最小单位是:进程. 81. 进程 ...