Android开发教程:监听EditText的变化

来源:互联网 发布:mysql grouping函数 编辑:程序博客网 时间:2024/05/22 17:24

之前的有关EditText的文章,只是介绍EditText的一些最基本的用法,这次来深入学习一下EditText。

监听EditText的变化

使用EditText的addTextChangedListener(TextWatcher watcher)方法对EditText实现监听,TextWatcher是一个接口类,所以必须实现TextWatcher里的抽象方法:

 

 当EditText里面的内容有变化的时候,触发TextChangedListener事件,就会调用TextWatcher里面的抽象方法。

MainActivity.java

package com.lingdududu.watcher; 

import Android.app.Activity;

  import android.app.AlertDialog; 

 import android.content.DialogInterface;

  import android.os.Bundle;

  import android.text.Editable; 

 import android.text.TextWatcher; 

 import android.util.Log; 

import android.widget.EditText; 

  public class MainActivity extends Activity { 

     private EditText text; 

     String str;   

   @Override  

   public void onCreate(Bundle savedInstanceState) { 

         super.onCreate(savedInstanceState); 

         setContentView(R.layout.main);  

           text = (EditText)findViewById(R.id.text); 

         text.addTextChangedListener(textWatcher); 

     }  

          private TextWatcher textWatcher = new TextWatcher() {  

                  @Override

            public void afterTextChanged(Editable s) {  

               // TODO Auto-generated method stub 

                Log.d("TAG","afterTextChanged--------------->"); 

          }  

                   @Override 

        public void beforeTextChanged(CharSequence s, int start, int count,                  int after) {  

            // TODO Auto-generated method stub 

             Log.d("TAG","beforeTextChanged--------------->");

          }  

          @Override 

           public void onTextChanged(CharSequence s, int start, int before,                     int count) {

                 Log.d("TAG","onTextChanged--------------->");  

              str = text.getText().toString();

              try { 

                 //if ((heighText.getText().toString())!=null)  

                 Integer.parseInt(str); 

               } catch (Exception e) { 

                 // TODO: handle exception 

                 showDialog();  

            }  

              }   

         }; 

      private void showDialog(){

          AlertDialog dialog;  

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);  

        builder.setTitle("消息").setIcon(android.R.drawable.stat_notify_error); 

         builder.setMessage("你输出的整型数字有误,请改正");  

        builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){  

            @Override  

           public void onClick(DialogInterface dialog, int which) { 

                 // TODO Auto-generated method stub  

              } 

           }); 

         dialog = builder.create(); 

         dialog.show(); 

     }  } 

main.xml

<?xml version="1.0" encoding="utf-8"?>

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:orientation="vertical" 

    android:layout_width="fill_parent"

     android:layout_height="fill_parent" 

    >

 <TextView

        android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:text="请输入整型数字"     /> <EditText       android:id="@+id/text"  

   android:layout_width="fill_parent" 

      android:layout_height="wrap_content" 

      />

</LinearLayout>   效果图:

 

当我们在输入框输入不是整型数字的时候,会立刻弹出输入框,提示你改正

 

 

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-01/52648.htm

原创粉丝点击