简易的按钮事件

Button事件处理

范例说明

按钮在许多Windows窗口应用程序中,是最常见到的控件(Controls),此控件也常在网页设计里出现,诸如网页注册窗体、应用程序里的"确定"等等。

而按钮所触发的事件处理,我们称为Event Handler,只不过在Android当中,按钮事件是由系统的Button.OnClickListener所控制,熟悉Java程序设计的读者对OnXxxListener应该不陌生。以下的范例将示范如何在Activity里布局一个按钮(Button),并设计这个按钮的事件处理函数,当点击按钮的同时,更改TextView里的文字。

运行结果

 
(点击查看大图)图3-7  Android手机的实际画面运行结果
范例程序
  1. src/irdc.ex03_07/Ex03_07.java

一开始,必须先在Layout当中布局一个Button及一个TextView对象,找不到这两个组件的话,系统会无法运行下去,在开发阶段会造成编译错误。

其次在主程序中,请留意onCreate里创建的Button.OnClickListener事件,这也是触发按钮时会运行的程序段落;但由于Eclipse无法自动加载默认的传递参数(new Button.OnClickListener()),所以,在编写程序描述时,必须自行键入新创建的按钮所需的OnClickListener() 事件,如下所示:

  1. package irdc.ex03_07;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.Button;  
  7. import android.widget.TextView;  
  8.  
  9. public class EX03_07 extends Activity  
  10. {  
  11.   private Button mButton1;  
  12.   private TextView mTextView1;  
  13.     
  14.   /** Called when the activity is first created. */ 
  15.   @Override 
  16.   public void onCreate(Bundle savedInstanceState)  
  17.   {  
  18.     super.onCreate(savedInstanceState);  
  19.     setContentView(R.layout.main);  
  20.       
  21.     mButton1 =(Button) findViewById(R.id.myButton1);  
  22.     mTextView1 = (TextView) findViewById(R.id.myTextView1);  
  23.       
  24.     mButton1.setOnClickListener(new Button.OnClickListener()  
  25.     {  
  26.       @Override 
  27.       public void onClick(View v)  
  28.       {  
  29.         // TODO Auto-generated method stub  
  30.         mTextView1.setText("Hi, Everyone!!");  
  31.       }  
  32.     });  
  33.   }  

扩展学习

本范例中只有一个按钮,但在Activity里,其实可以布局数个按钮,只需要在Layout里多配置一个按钮对象,以下的程序将创建两个按钮事件作为示范:

  1. package irdc.ex03_07;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.Button;  
  7. import android.widget.TextView;  
  8.  
  9. public class EX03_07 extends Activity  
  10. {  
  11.   private Button mButton1;  
  12.   private Button mButton2;  
  13.   private TextView mTextView1;  
  14.     
  15.   /** Called when the activity is first created. */ 
  16.   @Override 
  17.   public void onCreate(Bundle savedInstanceState)  
  18.   {  
  19.     super.onCreate(savedInstanceState);  
  20.     setContentView(R.layout.main);  
  21.       
  22.     mButton1 =(Button) findViewById(R.id.myButton1);  
  23.     mButton2 =(Button) findViewById(R.id.myButton2);  
  24.     mTextView1 = (TextView) findViewById(R.id.myTextView1);  
  25.       
  26.     mButton1.setOnClickListener(new Button.OnClickListener()  
  27.     {  
  28.       @Override 
  29.       public void onClick(View v)  
  30.       {  
  31.         // TODO Auto-generated method stub  
  32.         mTextView1.setText("Hi, Everyone!!");  
  33.       }  
  34.     });  
  35.       
  36.     mButton2.setOnClickListener(new Button.OnClickListener()  
  37.     {  
  38.       @Override 
  39.       public void onClick(View v)  
  40.       {  
  41.         // TODO Auto-generated method stub  
  42.         mTextView1.setText("Hi, David!!");  
  43.       }  
  44.     });  
  45.   }  

最后来谈谈按钮事件里被重写的onClick(View v) 函数,此函数唯一的参数是View类型的变量v,这个变量所指的是来自父层(parent)的ContentView,亦即通过"v.*"可以更改其父层的View状态或属性。

原文地址:https://www.cnblogs.com/tt_mc/p/1793232.html