EditText监听以及手机号校验

EditText监听思路

对想被监听的EditText使用焦点事件方法setOnFocusChangeListener()方法,当失去焦点时在方法中定义逻辑。

实例demo结合简单的手机号校验

EditText中监听接口TextWatcher,有三个成员方法

  • beforeTextChange():文本内容将要被改变的时候调用。

  • onTextChanged():文本内容改变过程中调用。

  • afterTextChanged():文本内容输入完成之后调用。

mEditText.addTextChangedListener(new TextWatcher() {

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

            }

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

            }

            @Override
            public void afterTextChanged(Editable s) {

                }
        });

手机号段校验

在afterTextChanged()方法中文本内容和定义的数组使用match()方法去比对。

第一位数的校验 使用startsWith("1")方法或者定义一个数组 String num = [1];
多位数的校验 通过数组 String num = [1] [345678] [23456] ...
11位手机号校验 通过正则表达式 String num = "[1][345678]\d{9}";

activity_main.xml

定义两个EditText

<EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入"
        android:maxLength="11"/>

    <EditText
        android:id="@+id/edit_text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="试一试"
        />

mainActivity

对第一个EditText中的手机号进行校验,当点击第二个EditText时对第一个EditText中的手机号进行进一步校验,该demo主要针对多输入框的注册 页面。
public class MainActivity extends AppCompatActivity {

    EditText mEditText;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         mEditText = (EditText) findViewById(R.id.edit_text);

        //焦点事件
        mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {

                if(!hasFocus){
                    //校验11位手机号
                    String num = "[1][345678]\\d{9}";
                    //  获取EditText中的输入内容
                    final String inputText = mEditText.getText().toString();

                    if(inputText.length()==11 & inputText.matches(num)==false){

                            Toast.makeText(MainActivity.this, "请输入正确的手机号", Toast.LENGTH_SHORT).show();

                    }else if(inputText.length()<11){
                        Toast.makeText(MainActivity.this, "请输入正确的手机号", Toast.LENGTH_SHORT).show();
                    }

                }else {

                }
            }
        });

        //EditText的点击事件
        mEditText.addTextChangedListener(new TextWatcher() {

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

            }

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

            }

            @Override
            public void afterTextChanged(Editable s) {

                String num = "[1][345678]\\d{9}";

                if (TextUtils.isEmpty(s.toString())){
                    Toast.makeText(MainActivity.this, "手机号不能为空", Toast.LENGTH_SHORT).show();
                }else if(s.length()==11&s.toString().matches(num)==false){
                       Toast.makeText(MainActivity.this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show();
                }
                }
        });

    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,523评论 0 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 27,790评论 5 19
  • 在添加类文件的时候,突然报出一个错:duplicate symbols for architecture i386...
    Sam129阅读 239评论 0 0
  • 昨天回去有些晚,未曾炒菜,凑合着切了些黄瓜,煮了锅米饭便带去上班。 幸好上次在公司存了一瓶老干妈。老干妈伴米饭,倒...
    化浊阅读 294评论 0 0