2017-03-09 67 views
0

目前是我的目标做的是在默认情况下禁用按钮,然后重新启用时,有两个存储输入1 EditTexts内输入2的任何值Android的工作室 - 如何有.addTextChangedListener有两个EditText上工作

input1= (EditText) findViewById(R.id.input1); 
    input2= (EditText) findViewById(R.id.input2); 

    go1= (Button) findViewById(R.id.Go1); 

    go1.setEnabled(false); //Default turning off my button 

    input1.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      if (s.toString().equals("")) { 
       go1.setEnabled(false); 
      } else { 
       go1.setEnabled(true); 
      } 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

上面的工作是为了在input1有任何值时启用按钮go1,但是我不确定如何使用它来为了仅在BOTH input1和input2有值时才启用按钮。

创建第二个侦听器只会倒退,因为会覆盖另一个侦听器。

任何帮助,将不胜感激。

+0

如果用户再次清空edittext,会发生什么呢? – tahsinRupam

+0

@tahsinRupam如果用户用这个清空edittext,它会再次禁用按钮 – Hervel

回答

1

在同一时间验证EditText的值。

input1= (EditText) findViewById(R.id.input1); 
input2= (EditText) findViewById(R.id.input2); 
go1= (Button) findViewById(R.id.Go1); 

go1.setEnabled(false); //Default turning off my button 


TextWatcher watcher = new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     go1.setEnable(!TextUtils.isEmpty(input1.getText()) 
       && !TextUtils.isEmpty(input2.getText())); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { } 

    @Override 
    public void afterTextChanged(Editable s) { } 
} 

input1.addTextChangedListener(watcher); 
input2.addTextChangedListener(watcher); 
+0

这很有效,谢谢! – Hervel

0

这可以简单地使用if语句来完成。

input1= (EditText) findViewById(R.id.input1); 
input2= (EditText) findViewById(R.id.input2); 
go1= (Button) findViewById(R.id.Go1); 

go1.setEnabled(false); //Default turning off my button 

input1.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (s.toString().equals("")) { 
      go1.setEnabled(false); 
     } else { 
      if(!input2.getText().toString.equals("")) //reference line **1** 
       go1.setEnabled(true); 
     } 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}); 

这同样TextWatcher可以添加到input2为好,但你需要在代码编辑参考线1input2input1。这是有效的,因为当input1input2文本的值被改变时,它检查两个输入是否为空。