简易的按钮事件
Button事件处理
范例说明
按钮在许多Windows窗口应用程序中,是最常见到的控件(Controls),此控件也常在网页设计里出现,诸如网页注册窗体、应用程序里的"确定"等等。
而按钮所触发的事件处理,我们称为Event Handler,只不过在Android当中,按钮事件是由系统的Button.OnClickListener所控制,熟悉Java程序设计的读者对OnXxxListener应该不陌生。以下的范例将示范如何在Activity里布局一个按钮(Button),并设计这个按钮的事件处理函数,当点击按钮的同时,更改TextView里的文字。
运行结果
(点击查看大图)图3-7 Android手机的实际画面运行结果 |
- src/irdc.ex03_07/Ex03_07.java
一开始,必须先在Layout当中布局一个Button及一个TextView对象,找不到这两个组件的话,系统会无法运行下去,在开发阶段会造成编译错误。
其次在主程序中,请留意onCreate里创建的Button.OnClickListener事件,这也是触发按钮时会运行的程序段落;但由于Eclipse无法自动加载默认的传递参数(new Button.OnClickListener()),所以,在编写程序描述时,必须自行键入新创建的按钮所需的OnClickListener() 事件,如下所示:
- package irdc.ex03_07;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- public class EX03_07 extends Activity
- {
- private Button mButton1;
- private TextView mTextView1;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mButton1 =(Button) findViewById(R.id.myButton1);
- mTextView1 = (TextView) findViewById(R.id.myTextView1);
- mButton1.setOnClickListener(new Button.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- // TODO Auto-generated method stub
- mTextView1.setText("Hi, Everyone!!");
- }
- });
- }
- }
扩展学习
本范例中只有一个按钮,但在Activity里,其实可以布局数个按钮,只需要在Layout里多配置一个按钮对象,以下的程序将创建两个按钮事件作为示范:
- package irdc.ex03_07;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- public class EX03_07 extends Activity
- {
- private Button mButton1;
- private Button mButton2;
- private TextView mTextView1;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mButton1 =(Button) findViewById(R.id.myButton1);
- mButton2 =(Button) findViewById(R.id.myButton2);
- mTextView1 = (TextView) findViewById(R.id.myTextView1);
- mButton1.setOnClickListener(new Button.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- // TODO Auto-generated method stub
- mTextView1.setText("Hi, Everyone!!");
- }
- });
- mButton2.setOnClickListener(new Button.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- // TODO Auto-generated method stub
- mTextView1.setText("Hi, David!!");
- }
- });
- }
- }
最后来谈谈按钮事件里被重写的onClick(View v) 函数,此函数唯一的参数是View类型的变量v,这个变量所指的是来自父层(parent)的ContentView,亦即通过"v.*"可以更改其父层的View状态或属性。