在android的编辑文本框中设置从2到1000的数字范围
在我的应用程序中,我有一个编辑文本框,允许用户只输入2到1000之间的数字。我已经对此进行了验证 例如,如果输入的数字小于“2”,则设置文本应为“2”,我将在单击按钮时将这些值保存在共享首选项文件中,并保留这些输入值以供进一步使用 当用户输入任何大于1000或小于2的数字时,按下手机的后退键,然后单击按钮,就会出现问题,它会保存甚至不允许的错误值 我还实现了back pressed()方法,但如果键盘打开,我仍然可以使用back键。我正在尝试做一些用户甚至无法输入任何超过1000的数字的事情。要么键盘停止工作,要么它被禁用,就像这样,编辑文本框甚至不接受任何不正确的值 简而言之,我想设置一个编辑文本框可以接受输入的数字范围在android的编辑文本框中设置从2到1000的数字范围,android,Android,在我的应用程序中,我有一个编辑文本框,允许用户只输入2到1000之间的数字。我已经对此进行了验证 例如,如果输入的数字小于“2”,则设置文本应为“2”,我将在单击按钮时将这些值保存在共享首选项文件中,并保留这些输入值以供进一步使用 当用户输入任何大于1000或小于2的数字时,按下手机的后退键,然后单击按钮,就会出现问题,它会保存甚至不允许的错误值 我还实现了back pressed()方法,但如果键盘打开,我仍然可以使用back键。我正在尝试做一些用户甚至无法输入任何超过1000的数字的事情。要
请帮助首先完成本课程:
package com.test;
import android.text.InputFilter;
import android.text.Spanned;
public class InputFilterMinMax implements InputFilter {
private int min, max;
public InputFilterMinMax(int min, int max) {
this.min = min;
this.max = max;
}
public InputFilterMinMax(String min, String max) {
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(max);
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
int input = Integer.parseInt(dest.toString() + source.toString());
if (isInRange(min, max, input))
return null;
} catch (NumberFormatException nfe) { }
return "";
}
private boolean isInRange(int a, int b, int c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
这将允许用户仅输入1到12之间的值
编辑:
Set your edittext with android:inputType="number".
谢谢。您可以这样禁用键盘:
InputMethodManager ipmm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
ipmm.hideSoftInputFromWindow(url.getWindowToken(), 0);
其中url
是:
url = (EditText) findViewById(R.id.eT_webbrowser);
您可以使用Textwatcher,而不是按钮单击验证 范例
editext1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// YOur Code
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
您可以在EditText上使用InputFilter。您可以使用[or[this]谢谢,但这段代码给出了一些错误,表示“令牌上的语法错误”hideSoftInputFromWindow“,标识符应位于该令牌之后”在我的代码中,它非常适合我。在我的情况下,在我在EditText中输入网址后,我禁用了软键盘,它就可以工作了…再次检查。我已经检查了好几次…不工作了..:(,,在我的代码中,当用户输入大于1000的任何内容时,我希望禁用键盘。请告知如何写入此代码以禁用键盘。因为您希望用户输入并使用您的代码,所以您正在验证输入。请在验证代码行后使用此代码。
editext1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// YOur Code
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});