Java 防止表单预上传时触发onChangeListener

Java 防止表单预上传时触发onChangeListener,java,android,Java,Android,我有一个名为VIN Number的文本字段,当用户输入时,如果他们达到17个字符,我想触发一个LookUpVin()方法 问题是,当用户导航到屏幕时,如果VIN已预发布,它将调用LookUpVin(),删除用户在其他字段(品牌、型号、年份等)中键入的任何内容 如何仅在用户键入时启动更改侦听器,而不是在通过数据源填充表单时启动更改侦听器? 您是否尝试过在字段预排后添加侦听器?或者检查s.toString()是否等于预填充的文本,如果是,则在执行后文本更改(可编辑的)中的代码之前返回回调调用的确切内

我有一个名为VIN Number的文本字段,当用户输入时,如果他们达到17个字符,我想触发一个
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();
                }
            }
        });