Android学习起步 - Button按钮及事件处理

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

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

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

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3 android:layout_width="match_parent"
 4 android:layout_height="match_parent"
 5 android:orientation="vertical" >
 6
 7 <Button
 8 android:id="@+id/button1"
 9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:text="点我" />
12
13 <TextView
14 android:id="@+id/textView1"
15 android:layout_width="match_parent"
16 android:layout_height="wrap_content"
17 android:hint="等待单击" /> <!-- 默认未被单击时的提示信息 -->
18
19 </LinearLayout>

首先看第一种匿名内部类写的监听事件处理方式:

 1 package com.example.helloworld;
 2
 3
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9 import android.widget.TextView;
10
11
12 public class MainActivity extends Activity {
13
14     private Button btn1;   //声明按钮对象
15     private TextView tv1;  //声明文本框对象
16
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.myactivity_main);
21
22         //以下代码以匿名内部内的方式处理按钮click事件
23
24         //初始化两个控件对象的实例,学过MFC的是不是很熟悉,和GetDlgItem api类似的道理了
25         btn1 = (Button) findViewById(R.id.button1);
26         tv1 = (TextView) findViewById(R.id.textView1);
27
28         //这里设置按钮被Click时的处理函数,是new一个OnClickListener的匿名内部类来实现的
29         btn1.setOnClickListener(new OnClickListener() {
30
31             //重载了OnClickListener接口的onClick方法,处理被占击后的事件
32             @Override
33             public void onClick(View v) {
34                 // TODO Auto-generated method stub
35                 tv1.setHint("按钮被单击了");
36             }
37         });
38     }
39 }

再看外部类的写法,其实很简单了,就再加个类而已:

 1 package com.example.helloworld;
 2
 3
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9 import android.widget.TextView;
10
11
12 public class MainActivity extends Activity {
13
14     private Button btn1;   //声明按钮对象
15     private TextView tv1;  //声明文本框对象
16
17     //这里声明了一个方法可以访问到TextView的对象
18     public TextView getTv1() {
19         return tv1;
20     }
21
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.myactivity_main);
26
27         //以下代码以外部类的方式处理按钮click事件
28
29         //初始化两个控件对象的实例,学过MFC的是不是很熟悉,和GetDlgItem api类似的道理了
30         btn1 = (Button) findViewById(R.id.button1);
31         tv1 = (TextView) findViewById(R.id.textView1);
32
33         //这里采用外部类MyOnClick实现事件处理
34         btn1.setOnClickListener(new MyOnClick(this));
35     }
36 }
37
38
39 //外部类,实现OnClickListener接口
40 class MyOnClick implements OnClickListener {
41
42     private MainActivity baseActivity;
43
44     //该构造函数的作用主要用于访问到TextView对象
45     public MyOnClick(MainActivity mt) {
46         baseActivity = mt;
47     }
48
49     @Override
50     public void onClick(View v) {
51         // TODO Auto-generated method stub
52         baseActivity.getTv1().setHint("按钮被单击了");
53     }
54 }

最后是activity类直接继承接口并实现事件响应,也是简单:

 1 package com.example.helloworld;
 2
 3
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9 import android.widget.TextView;
10
11
12 //本类直接实现接口OnClickListener
13 public class MainActivity extends Activity implements OnClickListener {
14
15     private Button btn1;   //声明按钮对象
16     private TextView tv1;  //声明文本框对象
17
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.myactivity_main);
22
23         //以下代码以本类直接实现接口的方式处理按钮click事件
24
25         //初始化两个控件对象的实例,学过MFC的是不是很熟悉,和GetDlgItem api类似的道理了
26         btn1 = (Button) findViewById(R.id.button1);
27         tv1 = (TextView) findViewById(R.id.textView1);
28
29         //这里因为是本类直接实现接口,直接给this指针就是了
30         btn1.setOnClickListener(this);
31     }
32
33     @Override
34     public void onClick(View v) {
35         // TODO Auto-generated method stub
36         tv1.setHint("按钮被单击了");
37     }
38 }

好了,处理按钮的OnClick事件上面只是实现了三种Java的写法而已,没什么技术含量,同理该按钮的其它事件也可以像上面一样处理。

时间: 2024-10-23 21:58:23

Android学习起步 - Button按钮及事件处理的相关文章

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

最基本的学习,设置一个按钮并监听实现实时时刻显示 首先XML布局,在layout中的  activity_main.xml中拖一个Button按钮到相应位置 然后在xml文件中做修改 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wid

Android自定义的button按钮

<TextView android:id="@+id/entry" android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/shape_button_sure" android:layout_marginLeft="10dp" android:layout_margin

Android学习 之 ColorStateList按钮文字变色

首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml: Java代码   <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed=&

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

新手起步迷迷糊糊,以下记录迷惑之处,大家共勉!!! 1.创建安卓应用工程 选择Andriod Application Project 点下一步直到完成. 二.下面是新建工程注意的地方 (1)首选删除系统自动生成的res/layout/activity_main.xml首页布局文件 (2)在File/New/Android XML File选项新建一个布局文件(布局文件名不要用系统默认的activity_main,否则生成的文件不正确,改成其它的),如图: 直接点完成就可以了. (3)最后修改sr

Android学习笔记——Button

该工程的功能是实现在activity中显示一个TextView和一个Button 以下代码是MainActivity中的代码 package com.example.button; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Button; import android.wid

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

首先我们在activity_main.xml里面先定义一个Button空间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="m

android listVIew实现button按钮监听程序

1.重写simpleAdapter 方法@Override public HashMap<String,String> getItem(int position) { // TODO Auto-generated method stub return listItem.get(position); } public MyAdapter(Context context, ArrayList<HashMap<String, String>> data, int resour

Android学习起步 - AutoCompleteTextView及MultiAutoCompleteTextView控件使用

大家在用百度搜索时,输入几个词就出现下拉框可选,以下两个控件就具有这个功能 AutoCompleteTextView:只能匹配输入的开始,只有一次匹配 MultiAutoCompleteTextView:可以匹配多次输入,用分隔符来分隔每一次的输入,就像发邮件时选多个联系人一样,见例子: 一.AutoCompleteTextView的效果实现如下 布局文件如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <

Android学习路线(八)为Action bar添加action按钮

Action bar允许你为与当前应用上下文相关的最重要的action items添加action按钮.那些直接显示在action bar上的icon或者文字都被称作action buttons.那些不适合action bar或者不是那么重要的Actions将会被隐藏在action overflow(译者注:action bar最右侧的垂直的三个点)里. 图1. 一个包含Search功能的action button和用来展示附加action的action overflow. 在XML文件中指定A