TextWatcher()在常量循环中

时间:2015-05-25 10:21:54

标签: android textwatcher

每次用户输入一个字母时,它都存储在outData中,然后清除TextView。为什么这是一个恒定的循环?我以为条件语句会退出它但它会不断循环?

  writeText     = (TextView) rootView.findViewById(R.id.WriteText);

  writeText.addTextChangedListener(watch);

  TextWatcher watch = new TextWatcher() {

    @Override
    public void afterTextChanged(Editable arg0) {

        if (writeText.getText() == "") {
            return;
        }
        else{
            String writeData = writeText.getText().toString();
            byte[] OutData = writeData.getBytes();
            ftDevice.write(OutData, writeData.length());
            writeText.setText("");
        }
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

    }

    @Override
    public void onTextChanged(CharSequence s, int a, int b, int c) {

    }
};

2 个答案:

答案 0 :(得分:1)

有两个问题:

1-字符串不能与==符号进行比较,这里有一个equals函数,这里你可以简单地检查字符串长度== 0作为返回的基本条件。

2-调用setText()将再次触发TextWatcher回调,而是编辑作为参数传递的Editable对象,并且会反映更改。

这样做:

if (writeText.getText().length() == 0) {
        return;
    }
    else{
        String writeData = writeText.getText().toString();
        byte[] OutData = writeData.getBytes();
        ftDevice.write(OutData, writeData.length());
        arg0.replace(0, arg0.length(), "");
    }

答案 1 :(得分:0)

  

比较使用'equals'方法的字符串。

     

String1.equals(String2)而不是==。

     

equals方法用于比较内容,==用于比较   引用和原语,而不是内容。