android中的验证

android中的验证,android,Android,我需要允许用户通过代码在android中只输入数字和句号 请帮帮我 InputFilter filter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { System.out.println("source " + source

我需要允许用户通过代码在android中只输入数字和句号

请帮帮我

    InputFilter filter = new InputFilter() {      
        public CharSequence filter(CharSequence source, int start, int end,  Spanned dest, int dstart, int dend) {

            System.out.println("source " + source);
            System.out.println("dSta " + dstart);
            System.out.println("dEnd " + dend);
            System.out.println("Start " + start);
            System.out.println("End " + end);

             for (int i = 0; i < source.length(); i++) {     
                 if (!Character.isDigit(source.charAt(i))) {
                        System.out.println("Character.isDigit(source.charAt(i))  " + Character.isDigit(source.charAt(i)));
                     return "";               
                     }
                /* if (!Character.isDefined('.')) {          
                     return "";               
                     } */      
                 }
             return null;

            }
        }; 

只需将inputType设置为您需要验证的视图。例如数字

yourview.setInputType(InputType.TYPE_CLASS_NUMBER);
十进制数

yourview.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

这是一个完整的验证代码

enter code herepublic class LoginActivity extends AppCompatActivity {
private static final String TAG = "LoginActivity";
private static final int REQUEST_SIGNUP = 0;

@Bind(R.id.input_email) EditText _emailText;
@Bind(R.id.input_password) EditText _passwordText;
@Bind(R.id.btn_login) Button _loginButton;
@Bind(R.id.link_signup) TextView _signupLink;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    ButterKnife.bind(this);

    _loginButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            login();
        }
    });

    _signupLink.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // Start the Signup activity
            Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
            startActivityForResult(intent, REQUEST_SIGNUP);
            finish();
            overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
        }
    });
}

public void login() {
    Log.d(TAG, "Login");

    if (!validate()) {
        onLoginFailed();
        return;
    }

    _loginButton.setEnabled(false);

    final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this,
            R.style.AppTheme_Dark_Dialog);
    progressDialog.setIndeterminate(true);
    progressDialog.setMessage("Authenticating...");
    progressDialog.show();

    String email = _emailText.getText().toString();
    String password = _passwordText.getText().toString();

    // TODO: Implement your own authentication logic here.

    new android.os.Handler().postDelayed(
            new Runnable() {
                public void run() {
                    // On complete call either onLoginSuccess or onLoginFailed
                    onLoginSuccess();
                    // onLoginFailed();
                    progressDialog.dismiss();
                }
            }, 3000);
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SIGNUP) {
        if (resultCode == RESULT_OK) {

            // TODO: Implement successful signup logic here
            // By default we just finish the Activity and log them in automatically
            this.finish();
        }
    }
}

@Override
public void onBackPressed() {
    // Disable going back to the MainActivity
    moveTaskToBack(true);
}

public void onLoginSuccess() {
    _loginButton.setEnabled(true);
    finish();
}

public void onLoginFailed() {
    Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();

    _loginButton.setEnabled(true);
}

public boolean validate() {
    boolean valid = true;

    String email = _emailText.getText().toString();
    String password = _passwordText.getText().toString();

    if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
        _emailText.setError("enter a valid email address");
        valid = false;
    } else {
        _emailText.setError(null);
    }

    if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
        _passwordText.setError("between 4 and 10 alphanumeric characters");
        valid = false;
    } else {
        _passwordText.setError(null);
    }

    return valid;
}

}

您有例外吗?或者你不明白什么?您的问题是什么?我的要求是,用户只需输入十进制值操作..,我无法使用urview.setInputTypeInputType.TYPE\u NUMBER\u FLAG\u decimal输入十进制值@你可以编辑你的答案,让它更清晰,而不是添加评论