use*_*817 4 android android-edittext
为了得到与中所写内容的总和,我在底部有多个edittext和a textview,edittexts但是我没有成功。我试过了,TextWatcher但是它没有用,例如我在第一个10中写了5,在第二个10中我写了16,结果是5 + 1 + 10。我也尝试了该onfocus方法,但最后一个问题仍然edittext没有更新结果。我真的不知道该怎么办。有人以前有这个问题吗?TextWatcher的实现:
TextWatcher inputTextWatcher1 = new TextWatcher() {
public void afterTextChanged(Editable s) {
number = Integer.parseInt(s.toString());
sum+=number;
tv.setText("sum is "+sum);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(final CharSequence s, int start, int before,
int count) {
}
};
Run Code Online (Sandbox Code Playgroud)
使用以下代码。我已经对其进行了测试,并且像魅力一样工作..
et1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (s.length() > 0) {
int number = Integer.parseInt(s.toString());
ans -= number;
}
}
@Override
public void afterTextChanged(Editable s) {
int number = Integer.parseInt(s.toString());
ans += number;
txtOutput.setText("sum is " + ans);
}
});
et2.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (s.length() > 0) {
int number = Integer.parseInt(s.toString());
ans -= number;
}
}
@Override
public void afterTextChanged(Editable s) {
int number = Integer.parseInt(s.toString());
ans += number;
txtOutput.setText("sum is " + ans);
}
});
Run Code Online (Sandbox Code Playgroud)
在这里,ans必须0在使用之前。et1和et2是EditText。
逻辑
beforeTextChanged将在应用任何文本更改之前调用。就像您键入5一样,由于没有数据,它会返回“”,然后如果您键入2,则它会返回先前输入的5。因此,这就是窍门。
在添加任何值之前,只需将其从上一个值中减去即可。否则,您的逻辑是正确的。但是每次您添加数字作为答案时。这使你的答案是错误的。
效益
现在,如果您使用此逻辑,那么那里的数量无关紧要EditText。这将提供真实的答案。您只需要添加TextWatcher到每个EditText。
| 归档时间: |
|
| 查看次数: |
7991 次 |
| 最近记录: |