美文网首页
EditText监听以及手机号校验

EditText监听以及手机号校验

作者: Rambo_Y | 来源:发表于2017-09-30 11:14 被阅读0次

    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();
                    }
                    }
            });
    
        }
    }
    

    相关文章

      网友评论

          本文标题:EditText监听以及手机号校验

          本文链接:https://www.haomeiwen.com/subject/okziextx.html