我只有一个编辑文字字段来接受电子邮件或电话号码。如何根据第一个字符更改输入类型?基于用户输入我需要执行不同的操作..主要的是我应该确定这是电子邮件还是电话号码。怎么做?
答案 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上进行搜索。我会在一段时间后尝试添加代码。祝你好运