我在多个editText框上有一个textwatcher,它接受计算并将结果输出到Textview中。但是,我还需要一种方法来使用DecimalFormat,以便在用户将其键入editText之后,它将其格式化为:“$ ###,###,###。00”。我已经考虑过使用OnFocusChangedListener,但这似乎仍会触发afterTextChanged事件。我怎么做才能让我最终得到Stack Overflow?
textwatcher调用这样的方法:
TextWatcher Watch = new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
calc();
}
private void calc() {
Editable eValue1 = new.getText(), eValue2 = ti.getText(), eValue3 = acc.getText();
Double value1 = 0.0, value2 = 0.0, value3 = 0.0, result = 0.0;
if (eValue1 != null)
value1 = toDouble(eValue1);
if (eValue2 != null)
value2 = toDouble(eValue2);
if (eValue3 != null)
value3 = toDouble(eValue3);
if (value1 != null && value2 != null && value3 != null)
result = value1 - (value2 + value3);
td.setText(formatCur(result));
}
private String formatCur(Double result) {
DecimalFormat df = new DecimalFormat("$###,###,###.00");
String format = df.format(result);
return format;
}
答案 0 :(得分:1)
您是否尝试删除侦听器,设置文本,然后再次添加侦听器?