按钮和文本框算是比较简单的控件了,以下主要讲按钮的事件响应,三种写法(匿名内部类响应事件、外部类响应事件、本类直接响应事件)

点击按钮后文本框中会显示 ”按钮被单击了”,先看效果:

以下是这个界面的布局文件:

 <?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按钮及事件处理的更多相关文章

  1. Android学习之Button按钮在程序运行时全部变大写的处理

    问题: 在layout布局文件中,我们命名的按钮名称是“button1”,程序运行过后,在app上显示出来的是“BUTTON1”,先看源代码和效果: 按钮源代码: 运行效果: 解决办法: 方法一: 在 ...

  2. Android学习笔记-Button(按钮)

    Button是TextView的子类,所以TextView上很多属性也可以应用到Button 上!我们实际开发中对于Button的,无非是对按钮的几个状态做相应的操作,比如:按钮按下的时候 用一种颜色 ...

  3. 我的android学习脚步----------- Button 和监听器setonclicklistener

    最基本的学习,设置一个按钮并监听实现实时时刻显示 首先XML布局,在layout中的  activity_main.xml中拖一个Button按钮到相应位置 然后在xml文件中做修改 <Rela ...

  4. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

  5. Android学习 之 ColorStateList按钮文字变色

    首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml: <?xml version="1.0" enco ...

  6. 转 Android学习 之 ColorStateList按钮文字变色

    Windows平台VC,对于不同的按钮状态,采用不同的颜色显示文字,实现起来比较复杂,一般都得自绘按钮.但是Android里面实现起来非常方便. 我们首先添加一个ColorStateList资源XML ...

  7. Android学习起步 - 新建工程及相关

    新手起步迷迷糊糊,以下记录迷惑之处,大家共勉!!! 1.创建安卓应用工程 选择Andriod Application Project 点下一步直到完成. 二.下面是新建工程注意的地方 (1)首选删除系 ...

  8. Android学习笔记——Button

    该工程的功能是实现在activity中显示一个TextView和一个Button 以下代码是MainActivity中的代码 package com.example.button; import an ...

  9. Android点击Button按钮的四种事件监听方法总结

    首先我们在activity_main.xml里面先定义一个Button空间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <RelativeLayout xmlns:a ...

随机推荐

  1. Jquery 点击图片在弹出层显示大图

    http://blog.csdn.net/wongwaidah/article/details/28432427(案例链接出处,本人只是转载收藏) <html> <head> ...

  2. ”未在本地计算机上注册“microsoft.et.OLEDB.4.0”提供程序。“解决方案大集合

    本人在做一个连接Access数据库的时候,程序扔给我一个如此Bug——“未在本地计算机上注册“microsoft.et.OLEDB.4.0”, 请教度娘,告诉我可能是如下因素: 一.“设置应用程序池默 ...

  3. getEnhancedMicrophone 方法

    [转]http://www.cnblogs.com/iBlogger/archive/2011/11/16/2251847.html Flex 4.6 SDK 提供了 getEnhancedMicro ...

  4. SVM

    sDJgfklJGV;LAKi管理科JF看了UFO李开复LKFLKJF EDJFO很疯狂的复活卡划分KJF

  5. 【Cocos2d-x 3.x】 动作类Action源码分析

    游戏设计中,动作是不可缺少的,Cocos2d-x中所有的动作都继承自Action类,而Action类继承自Ref和Clonable类,整个动作类继承体系如图: FiniteTimeAction是所有瞬 ...

  6. 交换技术(swaping) 视频11

    进程挂起的原因 1)进程全部阻塞,处理机空闲 2)系统负荷过重,内存空间紧张 3)操作系统需要,操作系统可能挂起后台进程或者一些服务进程(后台进程 优先级比 前天进程低),或者可能导致系统故障的进程 ...

  7. range(start,end,step)与xrange(start, stop[, step])

    >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> xrange(10) xrange(10) >>> ...

  8. oracle 块的学习——有定义和执行部分的块

    declare --定义变量 v_ename varchar2(5); begin --执行部分 select ename from emp where empno=&no; --在控制台显示 ...

  9. SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键

    http://blog.csdn.net/zh2qiang/article/details/5323981 SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入. 1 ...

  10. MYSQL 判断一个时间段是否在另一个时间段内。

    [1 CREATE TABLE #B 2 ( 3 MeetingRoom int, 4 BeginTime datetime, 5 EndTime datetime6 ) 7 insert into ...