sun*_*dar 3 android android-edittext
我正在使用TextWatcher.EditText当我输入内容时edittext它完美无缺,但是当我edittext从数据库中设置数据时NullPointerException.我曾经onTouchListener这样做过Edittext.我的问题是.我可以检查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;
}
});
Run Code Online (Sandbox Code Playgroud)
当我在det上调用setText时它会转到 TextWatcher
det.setText(ft.get_det().toString());
Run Code Online (Sandbox Code Playgroud)
TextWatcher
@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();
}
}
};
Run Code Online (Sandbox Code Playgroud)
Jit*_*Dev 25
创建一个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
}
};
Run Code Online (Sandbox Code Playgroud)
然后将其添加到EditText调用中
EditText.addTextChangedListener(textWatcher);
Run Code Online (Sandbox Code Playgroud)
并删除电话
EditText.removeTextChangedListener(textWatcher);
Run Code Online (Sandbox Code Playgroud)
我通过采用全局布尔变量解决了这个问题。在 onTouchListener 中将此变量设置为 true 并在 afterTextChanged 方法中检查条件,如果变量为真或假。
| 归档时间: |
|
| 查看次数: |
10280 次 |
| 最近记录: |