How to set InputType for EditText correctly?

I want my EditText content type to be a number. I set InputType, which is 2 according to reference . But it’s still possible to enter any character.

final EditText input = new EditText(this); input.setRawInputType(InputType.TYPE_CLASS_NUMBER); 

What am I doing wrong here?

I cannot use XML, but I have an EditTextPreference with android:inputType="number" and it works correctly.

EDIT:

Here is another code:

 case R.id.set_counter: AlertDialog.Builder setCounterDialog = new AlertDialog.Builder(this); setCounterDialog.setTitle("Set counter value"); final EditText input = new EditText(this); input.setRawInputType(InputType.TYPE_CLASS_NUMBER); InputFilter[] filter = new InputFilter[1]; filter[0] = new InputFilter.LengthFilter(4); input.setFilters(filter); setCounterDialog.setView(input); setCounterDialog.setPositiveButton("Ok", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { String inputText = input.getText().toString(); counter = Integer.parseInt(inputText); counterLabel = (TextView) findViewById(R.id.counter); counterLabel.setText(inputText); } }); setCounterDialog.setNegativeButton("Cancel", null); setCounterDialog.show(); return true; 
+4
source share
3 answers

use only input type instead

input.setInputType(InputType.TYPE_CLASS_NUMBER);

+10
source

Try the following:

 InputType.TYPE_CLASS_PHONE 
+1
source

First call with zero, then call with input type number:

 input.setRawInputType(null); input.setRawInputType(InputType.TYPE_CLASS_NUMBER); 
+1
source

All Articles