android - 在android中按用户的任意键后在EditText中追加 "@gmail.com"

标签 android

我在想下面给出的逻辑

editTextUserName.addTextChangedListener(new TextWatcher() {
   @Override
   public void beforeTextChanged(CharSequence s, int start, int count, int after) {

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

   }    
   @Override
   public void afterTextChanged(Editable s) {
                appendEmail(editTextUserName.getText().toString());
            }
        });    
 void appendEmail(String email){
        if( email.length()>=1){

            editTextUserName.setText("@gmail.com");
    }
}

这是示例代码,不是实际代码。这是抛出 stackoverflow 异常。

谁能解决这个问题

最佳答案

您需要检查子字符串“@gmail.com”是否已经存在,无需再次设置文本。因为当您将文本设置为 EditText 时,它会再次调用 afterTextChange,然后您调用 appendEmail,然后它会再次设置文本等。

void appendEmail(String email){
      if(!TextUtils.isEmpty(email) && email.contains("@gmail.com")){

            editTextUserName.setText(email + "@gmail.com");
      }

关于android - 在android中按用户的任意键后在EditText中追加 "@gmail.com",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258544/

相关文章:

android - 捕获 IP 摄像机流并在我的网站上发布

android - 在 Android SQlite 中查询 BIGINTEGER 数据类型

android - 系统刚启动时未收到 FCM 通知

android - Admob xml : the following classes could not be instantiated: - com. google.android.gms.ads.AdView

java - Android手写识别库

android - 手机和PC之间的Android聊天

java - 如果 Activity/UI 空闲一段时间(可能很长),UI 线程会做什么

java - 比较字符串时忽略正则表达式

android - 为 android studio 项目生成签名 APK 时,通用包装器中没有匹配的架构

android - 电子邮件附件的 Intent 过滤器