Android EditText最小值和最大值

5

我正在开发一款安卓应用,实际上我需要为一个编辑框设置最小和最大值。我的最小值是18,最大值是65。我已经编写了相关代码。

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;
    }
}




EditText et = (EditText) findViewById(R.id.myEditText);
et.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "12")});

我从这个网站上得到了这段代码... 有没有办法在Android中为EditText定义最小值和最大值? 实际上,这是针对1到12之间的值,对于这些值它可以正常工作,但是当我将其更改为18和45时,它无法工作... 请问有人能帮我吗?我需要做哪些更改...


尝试记录值或尝试调试器模式。 - Shobhit Puri
1
你尝试过在你提供的链接中使用itsrajesh4uguys的答案吗?那个解决方案很好,对我有用。 - JNI_OnLoad
感谢Jeet的评论...让我来试一试.. - user2223317
哦,不好了,它不起作用了...我想我需要写更多的代码来解决这个问题...但是我在安卓编程方面没有太多经验。 - user2223317
这个解决方案对于大量的数字,比如年份,无法有效运行! - SDG69
1个回答

3

不行啊,当我输入18和65这两个数时,它不能正常工作。但对于1-9之间的第一个数字,它可以正常工作。但是当最小值为10时,就会出问题,我们无法输入第一个字母"1",这就是问题所在。 - user2223317
1
我认为你应该始终将最小边界设置为0。否则,如果你想要的数字在40到120之间,例如,那么没有任何数字会被接受,因为如果你想要数字100并开始按下'1','0','0',任何正确的过滤器都不会接受第一个数字,因为它不在40以上。 - EyalBellisha
谢谢androidcompile,无论如何我将您的回复作为答案,尽管它没有起作用...感谢您对我的回复感兴趣..非常感谢... - user2223317

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接