How to force EditText to accept only numbers?

You can use android:inputType="number" in the XML file. You can specify other values such as numberDecimal as well.

Also, you might additionally want to use android:singleLine="true" for a single line Edittext.

Also, look into android:numeric and android:maxLength. maxLength in particular can be useful for setting length limitations.


Or you can add the following:

yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER | 
                          InputType.TYPE_NUMBER_FLAG_DECIMAL |
                          InputType.TYPE_NUMBER_FLAG_SIGNED);

this will accept numbers, float point numbers and negative numbers you can remove any of these as needed


Use android:inputType="number" in your layout XML


This also works fine:

android:digits="0123456789"