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 ...
随机推荐
- setInterval和clearInterval
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- it小小鸟
It小小鸟观后感 每个人的理想目标都是不同的,很多人有自己的理想.却被困于现实而止步不前.一篇<it小小鸟>让我却懂得,一个人如果想有所作为,就不能止步不前.光有一个远大的理想是然并卵的. ...
- Sql/Plus连接Oracle时候出现sql*net not properly installed 解决办法
在PLSQL Developer选择Tools > Preferences > options > 下的如图所示:"Oracle Home" and " ...
- Django后台post请求中的csrf token
使用Requests库操作自己的Django站点,post登陆admin页面返回403,serverlog显示csrf token not set. csrf token是get登陆页面时服务器放在c ...
- ODOO-10.0 错误 Could not execute command 'lessc'
2017-01-05 20:24:12,473 4652 INFO None odoo.service.db: Create database `hello`. 2017-01-05 20:24:16 ...
- Lua 自定义函数string.split
function string.split(str, delimiter) if str==nil or str=='' or delimiter==nil then return ...
- 转~~~ DIV+CSS实现三角形提示框
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...
- (转)AppiumLibrary基本操作
*** Settings *** Library AppiumLibrary Library Collections Library String Library Dialogs *** Test C ...
- Smart_Script
target_type Name Value target_param1 target_param2 target_param3 target_x target_y target_z target_o ...
- setTimeout的使用与参数传递
在使用JavaScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的.这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚 ...