编写好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入门(四):链接接口组件和程序代码的更多相关文章

  1. Android入门(四)UI-创建自定义控件

    原文链接:http://www.orlion.ga/441/ 一.引入布局 iphone应用顶部会有一个标题栏,我们可以模仿着做一个,但是如果我们的程序中很多个活动都需要这样的标题栏,如果 每一个活动 ...

  2. Android Telephony分析(七) ---- 接口扩展(异步转同步)

    本文是基于上一篇<Android Telephony分析(六) —- 接口扩展(实践篇)>来写的.上一篇介绍的接口扩展的方法需要实现两部分代码:1. 从APP至RIL,发送请求:2. 从R ...

  3. Android入门(三):使用TextView、EditText 和Button接口组件

    我使用的IDE是Android Studio 2.1,虽然使用Eclipse也可以进行Android的开发,但是网上的大神大都推荐Android Studio,愿意了解的朋友可以参考知乎上关于Andr ...

  4. 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战

    概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...

  5. Spring Boot入门(四):开发Web Api接口常用注解总结

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...

  6. 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...

  7. Android入门(八):使用RadioGroup 和RadioButton组件建立单选清单

    这一章,我们学习RadioGroup 和RadioButton组件,我们新建一个项目,编码过程与前几章的项目类似. 1.建立字符串资源文件strings.xml: <resources> ...

  8. Android入门(七):Spinner下拉式菜单组件

    对于手机和平板电脑的应用程序来说,打字是非常不方便的操作方式,比较好的方式就是列出一组选项让用户挑选,这样就可以避免打字的麻烦.使用Spinner下拉菜单组件需要完成以下几个步骤: 1.建立选项列表, ...

  9. Android入门(五):程序架构——MVC设计模式在Android中的应用

    刚刚接触编程的的人,可能会这样认为:只要代码写完了能够跑起来就算完工了.如果只是写一个小程序,“能够跑起来”这样的标准也就可以了,但是如果你是在公司进行程序的开发,那么仅仅让程序成功的跑起来是不行的, ...

随机推荐

  1. URL Schemes

    APP 被唤醒离不开对URL Schemes的认知. 苹果选择沙盒来保障用户的隐私和安全,但沙盒也阻碍了应用间合理的信息共享,于是有了 URL Schemes 这个解决办法. URL Schemes ...

  2. (四)SQL Server分区管理

    一.拆分分区(SPLIT) 在已有分区上添加一个新分区. 如下图所示,将分区03拆分成03和04分区,拆分方式先锁定旧03分区的所有数据,后将旧03分区相关数据迁移到分区04,最后删除旧03上的对应分 ...

  3. CSS控制表格(table)样式

    CSS控制表格样式 /* 合并边框重叠部分 */ table{border-collapse:collapse;} /* 单元格边框 */ td{border:1px solid #A7AEB1;}

  4. PHP正则表达式详解(二)

    前言: 在本文中讲述了正则表达式中的组与向后引用,先前向后查看,条件测试,单词边界,选择符等表达式及例子,并分析了正则引擎在执行匹配时的内部机理. 本文是Jan Goyvaerts为RegexBudd ...

  5. 3.从Node.js操作MongoDB文档

    1.更新文档结构,而非SQL 2.数据库更新运算符 在MongoDB中执行对象的更新时,需要确切的指定需要改变什么字段.需要如何改变.不像SQL语句建立冗长的查询字符串来定义更新. MongoDB中可 ...

  6. javascript——三元操作符

    {{C?A:B}} C条件成立则为A,不存在取B 比如在跟后台交互时,有许多要设默认值 <script type=''text/javascript> var value = docume ...

  7. Python基本数据类型

    一.整数 int(整形) 在32位机器上,整数的位数为32位,取值范围为-2**31~2**1-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2* ...

  8. 解决ThinkPHP Call to a member function assign() on a non-object

    <ignore_js_op> assign是tp模板输出变量的一个方法.没有object只能说没实例化...<ignore_js_op> 经过几番思索,终于发现了.原来是Act ...

  9. [转]Ubantu vmware tools 安装

    https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&external ...

  10. [jquery]添加行内容后根据下拉菜单选择内容对比之前已有选项,若有重置再提示

    今天页面上一个添加列内容时,要对选择内容与之前已有选项内容作对比,防止用户重复选择内容 页面HTML代码 <ul class="list-group xj-list-NObor xj- ...