检查editText中的文本是否已更改

时间:2018-12-18 10:35:06

标签: java android

我有两个editTexts。我想每次都测试是否更改了文字,是否也要更改第二个文字的文字。

这就是我所做的:

TextWatcher fieldValidatorTextWatcherElec = new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        if (filterLongEnough1()) {
            et_electricite_€.setText(String.valueOf(new BigDecimal(Double.parseDouble(et_electricite.getText().toString())*tarif).setScale(2, RoundingMode.HALF_UP).doubleValue()));
        }
    }

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

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

    }

    private boolean filterLongEnough1() {
        return et_electricite.getText().toString().trim().length() > 0;
    }
};
et_electricite.addTextChangedListener(fieldValidatorTextWatcherElec);

TextWatcher fieldValidatorTextWatcherElecTarif = new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        if (filterLongEnough()) {
            et_electricite.setText(String.valueOf(new BigDecimal(Double.parseDouble(et_electricite_€.getText().toString())/tarif).setScale(2, RoundingMode.HALF_UP).doubleValue()));
        }
    }

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

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

    }

    private boolean filterLongEnough() {
        return et_electricite_€.getText().toString().trim().length() > 0;
    }
};
et_electricite_€.addTextChangedListener(fieldValidatorTextWatcherElecTarif);

问题是:第一次单击时,它会更改;当我尝试对第二个editText做同样的事情时,应用程序不移动,此后崩溃。这是错误日志:

  

E / JavaBinder:!!!绑定交易失败!!! (包裹大小= 2057252)   E / MQSEventManagerDelegate:发生reportJEEvent错误:android.os.TransactionTooLargeException:数据包大小2057252字节

1 个答案:

答案 0 :(得分:1)

您可以添加编辑文本侦听器。把逻辑放在afterTextChanged

EditText answer = new EditText(this);

//second, we create the TextWatcher
TextWatcher textWatcher = new TextWatcher() {

    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void afterTextChanged(Editable editable) {
       //here, after we introduced something in the EditText we get the string from it
       String answerString = answer.getText().toString();

       //and now we make a Toast
       //modify "yourActivity.this" with your activity name .this
       Toast.makeText(yourActivity.this,"The string from EditText is: "+answerString,0).show();

    }
};

//third, we must add the textWatcher to our EditText
answer.addTextChangedListener(textWatcher);