【问题标题】:Phone Number field should only accept number greater than 7 as first character in ANDROID电话号码字段应仅接受大于 7 的数字作为 ANDROID 中的第一个字符
【发布时间】:2016-08-23 12:49:29
【问题描述】:

我正在 android 中创建一个注册页面,其中包含电话号码字段。 此编辑文本应仅接受大于 6 的数字,即(7,8 或 9)作为第一个字符,如果用户输入小于 7 的数字,则应弹出错误且不应接受该数字。 任何帮助将不胜感激。 提前致谢

在下面粘贴我的代码。

private void numvalidate() {
et5.addTextChangedListener( new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int   i2) {     }

@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
@Override
public void afterTextChanged(Editable editable) {
Forlessvalues();
}
private String Forlessvalues() {
if (et5.getText().length() == 1 && et5.getText().length() < 10) {

String x = et5.getText().toString();
if (!(x.equals( "7" ) || x.equals( "8" ) || x.equals( "9" ))) {
et5.setError( "Enter Numbers starting with 7,8 or 9" );
return null;
}
}
return null;
}
} );
}

【问题讨论】:

  • 作为第一个租船人,只需使用这个 if(x.equalsIgnoreCase(String.valueOf(6))){ et5.setError("输入以 7,8 或 9 开头的数字");}
  • 使用可以使用这个正则表达式^[789]\d{9}$来解决你的问题..

标签: android android-studio


【解决方案1】:
@Override
public void afterTextChanged(Editable editable) {
  if(et5.getText().length()==1){
         if(et5.getText().toString().startsWith("7") ||
            et5.getText().toString().startsWith("8") ||
            et5.getText().toString().startsWith("9")){
          }else{
            te5.setText("");
            et5.setError( "Enter Numbers starting with 7,8 or 9" );
          }
    }
}

最简单的方法。 希望对您有所帮助..

【讨论】:

  • 工作得很好。非常感谢!
【解决方案2】:

使用正则表达式

声明字符串变量

     String  strExpression = "^[789]\\d{9}$";

if(!yourEdittext.getText().toString().matches(strExpression){
 AlertDialog alertDialog = new AlertDialog.Builder(this).create();
                alertDialog.setIcon(R.drawable.information);
                alertDialog.setTitle("Information");
                alertDialog.setMessage("Please provide valid mobile number.");
                alertDialog.setButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                //dismiss the dialog
                            }
                        });
                alertDialog.show();
}

【讨论】:

    【解决方案3】:
    private void numvalidate() {
     et5.addTextChangedListener( new TextWatcher() {
     @Override
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int   i2)  {     }
    
     @Override
     public void onTextChanged(CharSequence s, int start, int before, int count)
     {
     }
     @Override
     public void afterTextChanged(Editable editable) {
       Forlessvalues();
     }
    });
    }
    

    numvalidate() 方法之外使用方法Forlessvalues()

    private String Forlessvalues() {
      if (et5.getText().length() > 0 && et5.getText().length() < 10) {
    
       if (et5.getText().toString().startsWith("7") ||
            et5.getText().toString().startsWith("8") ||
            et5.getText().toString().startsWith("9")) {
            // Code for accept data and return String
       } else {
          et5.setError( "Enter Numbers starting with 7,8 or 9" );
          return null;
       }
     }
     return null;
    }
    

    【讨论】:

      【解决方案4】:

      android工作中手机号码第一个字符只有7、8、9位数字开头

      源代码 https://drive.google.com/open?id=0BzBKpZ4nzNzUQkU3S25fcXV4cEE

      First Letter Start with 7,8,9 in Edit text in android
      
      package com.keshav.mobilenumberrestriction_1_6_digits;
      
      import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      import android.text.Editable;
      import android.text.InputFilter;
      import android.text.Spanned;
      import android.text.TextWatcher;
      import android.widget.EditText;
      
      public class MainActivity extends AppCompatActivity {
      
          EditText et_mobile_feedback;
          String blockCharacterSet = "1234560";
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              et_mobile_feedback = (EditText) findViewById(R.id.et_mobile_feedback);
      
              et_mobile_feedback.setFilters(new InputFilter[] { filter });
      
              et_mobile_feedback.addTextChangedListener(new TextWatcher() {
      
                  public void afterTextChanged(Editable s) {
                      // you can call or do what you want with your EditText here
                  }
      
                  public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
      
                  public void onTextChanged(CharSequence s, int start, int before, int count) {
                      if(et_mobile_feedback.getText().toString().length()==0)
                          blockCharacterSet="1234560";
                      else
                          blockCharacterSet="";
                      if(et_mobile_feedback.getText().toString().length()==10)
                          blockCharacterSet="1234567890";
                  }
              });
          }
          private InputFilter filter = new InputFilter() {
      
              @Override
              public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
      
                  try {
                      if (source != null && blockCharacterSet.contains("" + source.charAt(0))) {
                          return "";
                      }
                  }catch (StringIndexOutOfBoundsException e){
      
                  }
                  return null;
              }
          };
      }
      
          <EditText
              android:id="@+id/et_mobile_feedback"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="5dp"
              android:editable="true"
              android:fontFamily="sans-serif"
              android:gravity="top"
              android:hint="Mobile"
              android:textColor="@color/colorPrimary"
              android:inputType="number"
              android:maxLength="10"
              android:padding="15dp"
              android:paddingLeft="10dp"
              android:paddingRight="10dp"
              android:paddingTop="10dp"
              android:singleLine="true">
      

      【讨论】:

        猜你喜欢
        • 2020-03-13
        • 1970-01-01
        • 1970-01-01
        • 2021-04-12
        • 2017-07-04
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多