监听多个EditText,只有当它们都有输入后,相应Button才能被点击
1个回答
2017-03-04 · 知道合伙人互联网行家
关注
展开全部
首先,要对 EditText 进行监听就需要 TextWatch() 这个类来实现。其中在这里最需要的就是该类的 onTextChanged 方法,来得到EditText的实时控制权。这时,我们就能通过判断该方法里的参数 CharSequence 的长度来进行判断。
然后,就是针对“几个”这个关键词,想了一个办法,就是new了一个类,专门用来对几个 EditText 的个数在 onTextChanged 方法中进行累加,只有条件合适了,才对按钮进行相应的操作。而且,每个 EditText 只能加一次,我这里想的办法是加2个boolean类型的数,进行控制,核心代码如下:
1 private boolean check = false, check_ = true;
2
3 @Override
4 public void onTextChanged(CharSequence s, int start, int before, int count) {
5
6 if (s.length() > 0) {
7 check = true;
8 } else if(s.length() == 0){
9 check_ = true; //开门
10 check = false;
11 }
12 if(check){
13 if(check_){
14 EdtCheckEntity.checkNum++;
15 check_ = false; //关门
16 if(EdtCheckEntity.checkNum == 3){
17 regist.setEnabled(true);
18 regist.setBackgroundResource(R.drawable.regist_t);
19 }
20 }
21 }else{
22 EdtCheckEntity.checkNum--;
23 if(EdtCheckEntity.checkNum < 3){
24 regist.setEnabled(false);
25 regist.setBackgroundResource(R.drawable.regist_f);
26 }
27 }
28 }
然后,就是针对“几个”这个关键词,想了一个办法,就是new了一个类,专门用来对几个 EditText 的个数在 onTextChanged 方法中进行累加,只有条件合适了,才对按钮进行相应的操作。而且,每个 EditText 只能加一次,我这里想的办法是加2个boolean类型的数,进行控制,核心代码如下:
1 private boolean check = false, check_ = true;
2
3 @Override
4 public void onTextChanged(CharSequence s, int start, int before, int count) {
5
6 if (s.length() > 0) {
7 check = true;
8 } else if(s.length() == 0){
9 check_ = true; //开门
10 check = false;
11 }
12 if(check){
13 if(check_){
14 EdtCheckEntity.checkNum++;
15 check_ = false; //关门
16 if(EdtCheckEntity.checkNum == 3){
17 regist.setEnabled(true);
18 regist.setBackgroundResource(R.drawable.regist_t);
19 }
20 }
21 }else{
22 EdtCheckEntity.checkNum--;
23 if(EdtCheckEntity.checkNum < 3){
24 regist.setEnabled(false);
25 regist.setBackgroundResource(R.drawable.regist_f);
26 }
27 }
28 }
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询