1

任何Android专家都可以帮忙输入过滤器来忽略这个字符-吗?

我为此设置了一个类,但是所有字符都被忽略了.....

public class InputFilterReservedCharacters implements InputFilter {

    @Override
    public CharSequence filter(CharSequence source, int start, int end,
        Spanned dest, int dstart, int dend) {
        try {
        if (end > start) {
            for (int index = start; index < end; index++) {
                if (source.charAt(index) == "-".toCharArray()[0]) {
                    return "";
                }
            }
        }
        } catch (NumberFormatException nfe) {
        }
        return "";
    }
}

感谢 StoneBird 的有用评论,我希望用户输入除“-”之外的任何内容。我是这样工作的:

@Override
public CharSequence filter(CharSequence source, int start, int end,
        Spanned dest, int dstart, int dend) {

    String returnValue = "";

    try {
        if (end > start) {
            for (int index = start; index < end; index++) {
                if (source.charAt(index) != '-'){
                    returnValue = Character.toString(source.charAt(index));
                }
            }
        }
    } catch (NumberFormatException nfe) {
    }
    return returnValue;
}
4

1 回答 1

0

您的代码if (source.charAt(index) == "-".toCharArray()[0]) {return "";}意味着如果函数找到-,则该函数将""作为结果返回,从而结束该函数的执行。这就是为什么您每次都得到空结果的原因,因为过滤器正在工作并且正在做您希望它返回的事情。尝试在您的函数中创建一个空字符串,将所有“有用”字符连接到该字符串,然后返回它。

public class InputFilterReservedCharacters implements InputFilter {

@Override
public CharSequence filter(CharSequence source, int start, int end,
    Spanned dest, int dstart, int dend) {
    private CharSequence result = ""; //change here
    try {
    if (end > start) {
        for (int index = start; index < end; index++) {
            if (source.charAt(index) != "-".toCharArray()[0]) { //change here
                result+=source.charAt(index);
            }
        }
    }
    } catch (NumberFormatException nfe) {
    }
    return result; //and here
}
}

另外我相信使用'-'而不是双引号会给你一个字符,所以你不需要将它转换为字符数组。

于 2013-04-23T17:53:10.517 回答