如何在单个编辑文本中接受电子邮件或电话号码

时间:2018-03-15 11:23:38

标签: android-edittext android-inputtype

我只有一个编辑文字字段来接受电子邮件或电话号码。如何根据第一个字符更改输入类型?基于用户输入我需要执行不同的操作..主要的是我应该确定这是电子邮件还是电话号码。怎么做?

2 个答案:

答案 0 :(得分:2)

在您的EditText设置TextWatcher调用函数以检查文本是电子邮件还是电话号码。

从TextView获取文字,如:

String text = textView.getText().toString();

将监听器添加到TextView:

textView.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(....){}

        @Override
        public void beforeTextChanged(...){}

        @Override
        public void afterTextChanged(Editable s) {
            if(isEmail(text)){//do your stuff}
            if(isPhone(text)){//do your stuff}  
        }
}

你的方法看起来像这样:

public static boolean isEmail(String text) {
    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    Pattern p = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(text);
    return m.matches();
}

public static boolean isPhone(String text) {
   if(!TextUtils.isEmpty(text)){
       return TextUtils.isDigitsOnly(text);
   } else{
       return false;
   }
}

仅检查第一个数字可能无法实现。虽然您可以在onTextChanged方法中添加验证。

答案 1 :(得分:0)

Novo Lucas的回答是正确的。

我的观点:

首先,您无法使用第一个字母知道输入类型,因为某些电子邮件地址以数字开头。

单击按钮,您可以通过了解文本是否仅包含数字或字母数字字符来识别类型。有关代码的详细信息,您可以在Google上进行搜索。我会在一段时间后尝试添加代码。祝你好运