Java 防止表单预上传时触发onChangeListener
我有一个名为VIN Number的文本字段,当用户输入时,如果他们达到17个字符,我想触发一个Java 防止表单预上传时触发onChangeListener,java,android,Java,Android,我有一个名为VIN Number的文本字段,当用户输入时,如果他们达到17个字符,我想触发一个LookUpVin()方法 问题是,当用户导航到屏幕时,如果VIN已预发布,它将调用LookUpVin(),删除用户在其他字段(品牌、型号、年份等)中键入的任何内容 如何仅在用户键入时启动更改侦听器,而不是在通过数据源填充表单时启动更改侦听器? 您是否尝试过在字段预排后添加侦听器?或者检查s.toString()是否等于预填充的文本,如果是,则在执行后文本更改(可编辑的)中的代码之前返回回调调用的确切内
LookUpVin()
方法
问题是,当用户导航到屏幕时,如果VIN已预发布,它将调用LookUpVin()
,删除用户在其他字段(品牌、型号、年份等)中键入的任何内容
如何仅在用户键入时启动更改侦听器,而不是在通过数据源填充表单时启动更改侦听器?
您是否尝试过在字段预排后添加侦听器?或者检查s.toString()是否等于预填充的文本,如果是,则在执行后文本更改(可编辑的)中的代码之前返回回调调用的确切内容,这会困扰您吗?
editVIN = (EditText) view.findViewById(R.id.editVIN);
editVIN.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | EditorInfo.TYPE_TEXT_FLAG_CAP_CHARACTERS);
editVIN.setImeOptions(EditorInfo.IME_ACTION_DONE);
editVIN.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
Utilities.hideSoftKeyboard(getActivity());
if (editVIN.getText().length() == 17) {
doVINLookup();
}
return true;
}
return false;
}
});
editVIN.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
editVIN.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (editVIN.getText().length() == 17) {
doVINLookup();
}
}
});