Android: How to Validate Edittext Input

Android: How can I validate EditText input?

Why don't you use TextWatcher ?

Since you have a number of EditText boxes to be validated, I think the following shall suit you :

  1. Your activity implements android.text.TextWatcher interface
  2. You add TextChanged listeners to you EditText boxes
txt1.addTextChangedListener(this);
txt2.addTextChangedListener(this);
txt3.addTextChangedListener(this);

  1. Of the overridden methods, you could use the afterTextChanged(Editable s) method as follows
@Override
public void afterTextChanged(Editable s) {
// validation code goes here
}

The Editable s doesn't really help to find which EditText box's text is being changed. But you could directly check the contents of the EditText boxes like

String txt1String = txt1.getText().toString();
// Validate txt1String

in the same method. I hope I'm clear and if I am, it helps! :)

EDIT: For a cleaner approach refer to Christopher Perry's answer below.

Validate input in Edittext after enter data in Android

  1. For allowing only 3 numbers use android:maxLength="3" in your EditText

  2. For automatically detecting the correct or incorrect answer use TextWatcher

Update
To change the TextView values:

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

//To avoid exception
if(mFillerAnswer.getText().toString().equals("")){return;}

int a = Integer.parseInt(mOneValue.getText().toString());
int b = Integer.parseInt(mTwoValue.getText().toString());

int val = Integer.parseInt(mFillAnswer.getText().toString());
if (val == (a * b)) {
//generate and use Random numbers here
mOneValue.setText(r.nextInt(max - min + 1) + min);
mTwoValue.setText(r.nextInt(10 - 0 + 1) + 0);

//to clear edit text
mFillAnswer.setText("")
}
}

You were generating random numbers only once so it was pointless to be expecting newer values while the generation code is outside the TextWatcher scope

Android: Adding validation to EditText box?

For getting only numbers as a input use this in your edittext

android:inputType="0123456789"

Inside onCreate use this code

edittext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(editText.getText().toString.length()<1){
// Display toast
Toast.makeText(getApplicationContext(), "Please enter something !",Toast.LENGTH_LONG).show();
}
}

});

Immediate validation check on input to edittext field(integer type)

Your problem is

java.lang.NumberFormatException: Invalid int: ""

So when we convert String to int ,we should know that String is null or not.

When you use TextUtils.isEmpty(s.toString()) ? 0 : s.toString() in your code , if s.toString() is null , it will return 0 .It will not cause NumberFormatException .And if s.toString() is not null ,it will return normal .

You should judge that s.toString is null or not.

Use var1 = Integer.parseInt(TextUtils.isEmpty(s.toString()) ? 0 : s.toString()); in your code .

var1 = Integer.parseInt(TextUtils.isEmpty(s.toString()) ? 0 : s.toString());
if (var1 < 9 || var1 > 50) {
Toast.makeText(MainActivity.this, "invalid input ", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Valid ", Toast.LENGTH_SHORT).show();
}

How to validate edit text input in Android?

That's because you are calling dialog.cancel() irrespective of error(s). Call this method only if there is no error. Keep a track of error using a boolean. If error exist make it false otherwise keep it true and call the dialog.cancel() method only if the boolean is true.

How to validate edittext with integers in android?

try this in layout.xml

<EditText android:numeric="integer" ..../>

in Code

EditText  mNumber = (EditText)findViewById(R.id....);

onButtonClick

if(mNumber.getText().toString().length()>0)
//logic
else
//empty Editext


Related Topics



Leave a reply



Submit