任何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;
}
答案 0 :(得分: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
}
}
另外我相信使用'-'
而不是双引号会给你一个char,所以你不需要将它转换为char数组。