我在 EditText
上使用 TextWatcher
。当我在 edittext
中输入内容时,它工作得很好,但是当我将数据设置到 edittext 时
从数据库获取 NullPointerException
。我在这个 Edittext
上使用了 onTouchListener
。我的问题是。
我可以检查 TextWatcher
仅在触摸事件为真后工作的条件吗?
EditText det=(EditText) findViewById(R.id.det);
det.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
System.out.println(v.getId());
d_id=v.getId();
if (event.getAction() == MotionEvent.ACTION_UP) {
getPopUp(det);
}
return false;
}
});
当我在 det 上调用 setText 时,它会转到 TextWatcher
det.setText(ft.get_det().toString());
文本观察器
@Override
public void afterTextChanged(Editable string) {
try {
int rp=0;
det=(EditText)findViewById(d_id);
s_id=d_id-4;
sev=(EditText)findViewById(s_id);
o_id=d_id-2;
occ=(EditText)findViewById(o_id);
rp=d_id+1;
rpn=(TextView)findViewById(rp);
if (sev.getText().length() > 0
|| occ.getText().length() > 0
|| sev.getText().length() == 0) {
if (string.length() > 0) {
int s, o, d, r;
System.out.println(sev.getId());
System.out.println(det.getId());
s = Integer.parseInt(sev.getText().toString());
o = Integer.parseInt(occ.getText().toString());
d = Integer.parseInt(det.getText().toString());
r = s * o * d;
String m = r + "";
rpn.setText(m);
} else {
// det.setText("");
// rpn.setText("");
System.out.println("In else");
// makeToast();
}
}
} catch (Exception e) {
det.setText("");
rpn.setText("");
System.out.println("IN Exception");
makeToast();
}
}
};
最佳答案
像下面这样创建一个 TextWatcher
TextWatcher textWatcher=new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};
然后将其添加到您的 EditText 调用中
EditText.addTextChangedListener(textWatcher);
并删除调用
EditText.removeTextChangedListener(textWatcher);
关于android - 如何在将数据设置为 edittext 时禁用 TextWatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19615373/