2011-08-24 61 views
4

我希望我的EditText内容类型为数字。我设置输入类型这是根据reference。但是仍然可以输入任何字符。如何正确设置EditText的InputType?

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

我在这里做错了什么?

我不能使用XML,但我有EditTextPreference android:inputType="number",它工作正常。

编辑:

下面是一些代码:

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; 

回答

10

使用刚刚输入的类型,而不是

input.setInputType(InputType.TYPE_CLASS_NUMBER);

+1

是的,它的工作原理。谢谢。 – Roman

1

试试这个:

InputType.TYPE_CLASS_PHONE 
+0

不,这是行不通的。 – Roman

1

与空第一次调用,然后输入类型号码呼叫:

input.setRawInputType(null); 
input.setRawInputType(InputType.TYPE_CLASS_NUMBER); 
+0

它将如何将null作为参数,因为它将int作为参数进行提示类型。 –

相关问题