企业网站备案座机号,100网站建设,天津怎样做网站推广,企业网站管理系统php源码android获取EditText内容#xff0c;TextWatcher按条件触发 背景#xff1a;解决方案#xff1a;效果#xff1a; 背景#xff1a;
最近在尝试用原生安卓实现仿element-ui表单校验功能#xff0c;其中涉及到EditText组件内容的动态校验#xff0c;初步实现功能后#… android获取EditText内容TextWatcher按条件触发 背景解决方案效果 背景
最近在尝试用原生安卓实现仿element-ui表单校验功能其中涉及到EditText组件内容的动态校验初步实现功能后发现重置按钮逻辑异常 理想情况下重置按钮触发后会将所有内容清空不会触发校验逻辑观察当前重置逻辑此处以活动名称为例) private EditText activityName;private void handleResetEvent() {// 点击重置按钮resetBtn.setOnClickListener(v - {activityName.setText(null);});}private void setActivityNameEvent() {// 活动名称添加内容改变后监听 触发校验活动名称activityName.addTextChangedListener(new TextWatcher() {Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}Overridepublic void afterTextChanged(Editable s) {verifyActivityName();}});}private void verifyActivityName() {if (StringUtils.isEmpty(activityNameValue)) {activityNameTip.setText(请输入活动名称);createVerifyPass false;} else {if ((activityNameValue.length() 3 || activityNameValue.length() 5)) {activityNameTip.setText(长度在3到5个字符);createVerifyPass false;} else {activityNameTip.setText(null);}}}debug调试发现走activityName.setText(null);就会马上触发afterTextChanged进而调用verifyActivityName()是同步的方法调用咱们的需求需要在手动修改EditText组件时能够触发校验而点击重置按钮时EditText组件内容置空不触发校验。
解决方案
考虑新增一个标识resetBtnClickFlag用来识别当前的动作是否为重置如果为重置则不触发具体的提示校验 private EditText activityName;private boolean resetBtnClickFlag false;private void handleResetEvent() {// 在重置按钮逻辑开始和结束分别设置重置标识开启和关闭resetBtn.setOnClickListener(v - {resetBtnClickFlag true;activityName.setText(null);selectArea null;selectDate null;selectTime null;timelyDelivery.setChecked(false);onlineActivity.setChecked(false);pushActivity.setChecked(false);offlineActivity.setChecked(false);brandExposure.setChecked(false);onlineBrandSponsorship.setChecked(false);offlineFree.setChecked(false);eventFormat.setText(null);resetBtnClickFlag false;});}// 在控制提示信息的具体方法补充重置标识逻辑private void verifyActivityName() {Editable activityNameValue activityName.getText();if (!resetBtnClickFlag StringUtils.isEmpty(activityNameValue)) {activityNameTip.setText(请输入活动名称);createVerifyPass false;} else {if (!resetBtnClickFlag (activityNameValue.length() 3 || activityNameValue.length() 5)) {activityNameTip.setText(长度在3到5个字符);createVerifyPass false;} else {activityNameTip.setText(null);}}}效果