我正在使用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() …Run Code Online (Sandbox Code Playgroud) 我有一排EditText.我的方案是当用户点击按钮时,将添加另一行.不知怎的,我已经实现了这个,但两者EditText都有相同的身份 那么如何分配EditText动态创建的id .我EditText在布局XML文件中.是否有可能使用XML或我必须以EditText编程方式创建.提前致谢.
private void inflateEditRow(String name) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.row, null);
final ImageButton deleteButton = (ImageButton) rowView
.findViewById(R.id.buttonDelete);
final EditText editText = (EditText) rowView
.findViewById(R.id.req);
if (name != null && !name.isEmpty()) {
editText.setText(name);
} else {
mExclusiveEmptyView = rowView;
deleteButton.setVisibility(View.VISIBLE);
}
// A TextWatcher to control the visibility of the "Add new" button and
// handle the exclusive empty view.
editText.addTextChangedListener(new TextWatcher() …Run Code Online (Sandbox Code Playgroud)