Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android的编辑文本框中设置从2到1000的数字范围_Android - Fatal编程技术网

在android的编辑文本框中设置从2到1000的数字范围

在android的编辑文本框中设置从2到1000的数字范围,android,Android,在我的应用程序中,我有一个编辑文本框,允许用户只输入2到1000之间的数字。我已经对此进行了验证 例如,如果输入的数字小于“2”,则设置文本应为“2”,我将在单击按钮时将这些值保存在共享首选项文件中,并保留这些输入值以供进一步使用 当用户输入任何大于1000或小于2的数字时,按下手机的后退键,然后单击按钮,就会出现问题,它会保存甚至不允许的错误值 我还实现了back pressed()方法,但如果键盘打开,我仍然可以使用back键。我正在尝试做一些用户甚至无法输入任何超过1000的数字的事情。要

在我的应用程序中,我有一个编辑文本框,允许用户只输入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
            }
        });