2017-03-09 1 views
0

현재 내가 무엇을 목표로하고있어 모두 EditTexts 입력 1 내부 및 입력 2 저장된 값이있을 때 다음 다시 활성화, 기본적으로 버튼을 비활성화하는 것입니다안드로이드 스튜디오 - 어떻게 .addTextChangedListener 두 글고 치기 작업을해야합니다

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 input1 및 input2 값이있는 경우에만 단추를 사용하려면 어떻게 할 수있는 확실하지 input1 어떤 값이있을 때 go1 사용할 수 있습니다.

두 번째 청취자를 만들면 다른 청취자를 겹쳐 쓰므로 역방향으로 작업하게됩니다.

도움을 주시면 감사하겠습니다.

+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에 추가 할 수 있습니다,하지만 당신은 input2에서 input1에 코드에서 기준선 1을 편집해야합니다. 이것은 input1 또는 input2 텍스트 값이 변경 될 때 입력이 비어 있는지 여부를 확인하기 때문에 작동합니다.

관련 문제