一步一步学android之事件篇——单击事件

在使用软件的时候单击事件必不可少,比如我想确定、取消等都需要用户的单击,所有的单击事件都是由View.OnClickListener接口来进行处理的,接口定义如下:

 

[java][/java] view plaincopy

  1. public static interface View.OnClickListener{
  2.         public void onClick(View v) {
  3.         }
  4.     }

下面同样写个例子来看下如何监听单击事件:

 

运行效果:

单击前的效果

 

 

单击后的效果

main.xml:

 

 

[html][/html] view plaincopy

  1. <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  2.     xmlns:tools=”http://schemas.android.com/tools”
  3.     android:id=”@+id/LinearLayout1″
  4.     android:layout_width=”match_parent”
  5.     android:layout_height=”match_parent”
  6.     android:orientation=”vertical” >
  7.     <EditText
  8.         android:id=”@+id/info”
  9.         android:layout_width=”match_parent”
  10.         android:layout_height=”wrap_content”
  11.         android:hint=”请输入信息…”>
  12.     </EditText>
  13.     <Button
  14.         android:id=”@+id/bt_show”
  15.         android:layout_width=”fill_parent”
  16.         android:layout_height=”wrap_content”
  17.         android:text=”显示EditText里面的内容到下面的TextView中” />
  18.     <TextView
  19.         android:id=”@+id/tv_show”
  20.         android:layout_width=”fill_parent”
  21.         android:layout_height=”wrap_content”
  22.         android:text=”我是用来显示EditText内容的TextView,点击上面的按钮我就能显示” />
  23. </LinearLayout>

 

MainActivity.java:

 

[java][/java] view plaincopy

  1. package com.example.clickdemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. import android.widget.EditText;
  8. import android.widget.TextView;
  9. public class MainActivity extends Activity {
  10.     //定义三个用到的组件
  11.     private Button bt_show;
  12.     private EditText info;
  13.     private TextView tv_show;
  14.     @Override
  15.     protected void onCreate(Bundle savedInstanceState) {
  16.         super.onCreate(savedInstanceState);
  17.         setContentView(R.layout.activity_main);
  18.         initView();
  19.     }
  20.     //单独写个方法初始化组件
  21.     private void initView(){
  22.         //从xml中获取Button,xml中id的作用
  23.         bt_show = (Button)super.findViewById(R.id.bt_show);
  24.         //从xml中获取EditText
  25.         tv_show = (TextView)super.findViewById(R.id.tv_show);
  26.         //从xml中获取TextView
  27.         info = (EditText)super.findViewById(R.id.info);
  28.         //为Button按钮添加单击事件
  29.         bt_show.setOnClickListener(new MyClickListener());
  30.     }
  31.     //定义监听处理程序
  32.     private class MyClickListener implements OnClickListener{
  33.         public void onClick(View v) {
  34.             // TODO Auto-generated method stub
  35.             //首先获取EditText中的内容
  36.             String temp = info.getText().toString();
  37.             //再把内容设置到TextView中
  38.             tv_show.setText(temp);
  39.         }
  40.     }
  41. }

第一次使用findViewById()方法,说明一下这个方法的作用是取得在xml中的组件,如果没取组件就用会报空指针异常,然后是使用setOnClickListener()方法来为对按钮监听,这里是定义了一个内部类来实现OnClickListener接口,然后在OnClick方法中实现自己的逻辑(单击后要做的事情)。

 

 

上面的代码还可以修改为不使用内部类,毕竟我们只用一次,所以改成下面的使用匿名内部类的方法:

MainActivity.java:

 

[java][/java] view plaincopy

  1. package com.example.clickdemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. import android.widget.EditText;
  8. import android.widget.TextView;
  9. public class MainActivity extends Activity {
  10.     //定义三个用到的组件
  11.     private Button bt_show;
  12.     private EditText info;
  13.     private TextView tv_show;
  14.     @Override
  15.     protected void onCreate(Bundle savedInstanceState) {
  16.         super.onCreate(savedInstanceState);
  17.         setContentView(R.layout.activity_main);
  18.         initView();
  19.     }
  20.     //单独写个方法初始化组件
  21.     private void initView(){
  22.         //从xml中获取Button,xml中id的作用
  23.         bt_show = (Button)super.findViewById(R.id.bt_show);
  24.         //从xml中获取EditText
  25.         tv_show = (TextView)super.findViewById(R.id.tv_show);
  26.         //从xml中获取TextView
  27.         info = (EditText)super.findViewById(R.id.info);
  28.         //为Button按钮添加单击事件
  29.         bt_show.setOnClickListener(new OnClickListener() {
  30.             public void onClick(View v) {
  31.                 // TODO Auto-generated method stub
  32.                 //首先获取EditText中的内容
  33.                 String temp = info.getText().toString();
  34.                 //再把内容设置到TextView中
  35.                 tv_show.setText(temp);
  36.             }
  37.         });
  38.     }
  39. }

效果是一样的,今天就说到这里了。

标签