2017-03-09 68 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文本的值被改變時,它檢查兩個輸入是否爲空。