如何在android中编辑文本中输入逗号“,”

时间:2014-07-29 10:26:26

标签: android android-edittext

当逗号","我怎么能得到它?在编辑文本中输入。 这就是我在做什么

newCategryET.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence returnedResult, int start,
                int before, int count) {

            String result = returnedResult.toString();
            String result2 = result.substring(result.length() - 2,
                    result.length() - 1);
            if (result2.equals(",")) {
                addCategoryToLayout(result.substring(0, result.length() - 1));
                newCategryET.setText("");
                return;

            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

每当按下逗号时,我想将编辑文本的文本添加到布局中 但我得到的数组索引超出了绑定异常。

任何帮助

这是我的logcat错误 -

java.lang.StringIndexOutOfBoundsException: length=1; regionStart=-1; regionLength=1

4 个答案:

答案 0 :(得分:2)

您可以使用字符串的contains方法来检查字符串是否包含逗号

String.contains(",")

然后在逗号出现时使用字符串标记生成器分割字符串

答案 1 :(得分:2)

考虑输入第一个字符的情况(如q):

  • 结果评估为' Q'
  • Result.Length()评估为1
  • Result.substring(result.length() - 2,result.length() - 1)计算结果为Result.substring(-1,0)

尝试从位置-1开始执行此子计划会导致您的异常。

此问题有几种更简单的解决方案 - 例如检查String.contains(",")或String.IndexOf()

答案 2 :(得分:0)

@Override
public void onTextChanged(CharSequence returnedResult, int start, int before, int count)
{
    String result = returnedResult.toString();
    if(result.length() == 0) return;
    //if(result.contains(",")) // another method
    if(result.charAt(result.length() - 1).equals(",") // last character is ','
    {
        // comma is entered
        addCategoryToLayout(result.substring(0, result.length() - 1));
        newCategryET.setText("");
    }
}

答案 3 :(得分:0)

试试这种方式,希望这会起作用

            @Override
            public void onTextChanged(CharSequence returnedResult, int start,
                    int before, int count) {

                    if (count > 0) {                    

                    String s1 = "" + result.charAt(start);
                    if (s1.toString().equals(",")) {
                        addCategoryToLayout(result.substring(0, result.length() - 1));
                    newCategryET.setText("");
                    return;
                    }
                }
            }