6

Se EditText è vuoto, è necessario effettuare il login Button. E se EditText ha alcuni testi, è necessario abilitare Login Button. Bene, puoi vedere questo metodo su Instagram Login.In Android, come disabilitare il pulsante di accesso rispetto a EditText?

Entrambi i campi sono vuoti, Accedi Button è DISATTIVATO.

enter image description here

Ecco campo Password è vuoto, così immobile Accedi Button è disattivato.

enter image description here

Qui sia Username e campo Password non è vuoto, così Accedi Button è attivato.

enter image description here

come realizzare questi passaggi ?? Ecco il mio codice e non funziona ..

EditText et1,et2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login_check); 
    et1 = (EditText) findViewById(R.id.editText1); 
    et2 = (EditText) findViewById(R.id.editText2); 
    Button b = (Button) findViewById(R.id.button1); 

    String s1 = et1.getText().toString(); 
    String s2 = et2.getText().toString(); 

    if(s1.equals("")|| s2.equals("")){ 
     b.setEnabled(false); 
    } else { 
     b.setEnabled(true); 
    } 
} 
+1

Prova a guardare oltre textutils: http://developer.android.com/reference/android/text/TextUtils.html - ha una caratteristica "isEmpty" che potrebbe essere utile qui. – Evilunclebill

+0

hai provato questo se (s1.length() == 0 || s2.length() == 0)? –

+0

controlla la mia risposta se funziona per te. – moDev

risposta

19

heres quello che stai cercando:

private EditText et1,et2; 
// create a textWatcher member 
private TextWatcher mTextWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 
    } 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 
    } 

    @Override 
    public void afterTextChanged(Editable editable) { 
     // check Fields For Empty Values 
     checkFieldsForEmptyValues(); 
    } 
}; 

void checkFieldsForEmptyValues(){ 
    Button b = (Button) findViewById(R.id.button1); 

    String s1 = et1.getText().toString(); 
    String s2 = et2.getText().toString(); 

    if(s1.equals("")|| s2.equals("")){ 
     b.setEnabled(false); 
    } else { 
     b.setEnabled(true); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login_check); 
    et1 = (EditText) findViewById(R.id.editText1); 
    et2 = (EditText) findViewById(R.id.editText2); 


    // set listeners 
    et1.addTextChangedListener(mTextWatcher); 
    et2.addTextChangedListener(mTextWatcher); 

    // run once to disable if empty 
    checkFieldsForEmptyValues(); 
} 
+1

Funziona :)) Grazie !! – DroidLearner

+0

+1 per te petey !! Ha funzionato anche per me. Grazie. – VikramV

+0

risposta scadente, nessun aiuto –

4

È necessario implementare TextWatcher su EditText per ottenere il risultato.

EditText et1, et2; 
Button b; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    et1 = (EditText) findViewById(R.id.editText1); 
    et2 = (EditText) findViewById(R.id.editText2); 
    b = (Button) findViewById(R.id.button1); 

    checkValidation(); 

    et1.addTextChangedListener(mWatcher); 
    et2.addTextChangedListener(mWatcher); 
} 

private void checkValidation() { 
    // TODO Auto-generated method stub 

    if ((TextUtils.isEmpty(et1.getText())) 
      || (TextUtils.isEmpty(et2.getText()))) 
     b.setEnabled(false); 
    else 
     b.setEnabled(true); 

} 

TextWatcher mWatcher = new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 
     // TODO Auto-generated method stub 
     checkValidation(); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     // TODO Auto-generated method stub 

    } 
}; 
2

è necessario tenere traccia l'azione dell'utente all'interno EditText utilizzando TextWatcher oggetto:

myEditText.addTextChangedListener(new TextWatcher() 
     { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 

      } 

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

      } 

      @Override 
      public void afterTextChanged(Editable s) 
      { 
       if (s.length() > 1) 
       { 
        //enable button 
       } else 
        //disable 
      } 
     }); 
0

provare questo

if(s1.equals("") && s2.equals("")) 
    { 
     b.setEnabled(true); 
     // to change color of the button you need to apply style to the button[here refer custom bg][1] 
    } 
    else 
    { 
     b.setEnabled(false); 
     //do nothing or display toast msg 
    } 
1
private TextWatcher mPhoneNumberEtWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {} 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
     if (charSequence.length() >= 10) { 
      mPhoneImg.setImageDrawable(getResources().getDrawable(R.drawable.phone_activate)); 

      if (mPasswordEt.getText().toString().length() >= 5) { 
       mLoginBtn.setEnabled(true); 
      } 

     } else { 
      mPhoneImg.setImageDrawable(getResources().getDrawable(R.drawable.phone)); 
      mLoginBtn.setEnabled(false); 
     } 
    } 

    @Override 
    public void afterTextChanged(Editable editable) { 
    } 
}; 

mPhoneNumberEt.addTextChangedListener(mPhoneNumberEtWatcher); 

Si dovrebbe usare TextWatcher. Questo chiamerà il metodo dopo aver digitato l'utente. E puoi controllare la lunghezza e qualcos'altro del tuo testo di modifica.

+0

Ya ti ho preso !! Grazie – DroidLearner

2

provare questo:

EditText et1,et2; 
Button b; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login_check); 
    et1 = (EditText) findViewById(R.id.editText1); 
    et2 = (EditText) findViewById(R.id.editText2); 
    b = (Button) findViewById(R.id.button1); 


    et1.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

          String s1 = et1.getText().toString(); 
          String s2 = et2.getText().toString(); 

          if(s1.equals("") && s2.equals("")){ 
            b.setEnabled(false); 
          } 
          else if(!s1.equals("")&&s2.equals("")){ 
            b.setEnabled(false); 
          } 
          else if(!s2.equals("")&&s1.equals(""){ 
            b.setEnabled(false); 
          } 
          else { 
          b.setEnabled(true); 
          } 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 
    et2.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

          String s1 = et1.getText().toString(); 
          String s2 = et2.getText().toString(); 

          if(s1.equals("") && s2.equals("")){ 
            b.setEnabled(false); 
          } 
          else if(!s1.equals("")&&s2.equals("")){ 
            b.setEnabled(false); 
          } 
          else if(!s2.equals("")&&s1.equals(""){ 
            b.setEnabled(false); 
          } 
          else { 
          b.setEnabled(true); 
          } 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 

} 
+0

Grazie Santosh! – DroidLearner

2

è necessario collegare un TextWatcher che viene chiamato ogni volta che il testo in uno dei campi EditText è cambiato.

private EditText mName; 
private EditText mPassword; 
private Button mButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_login_check); 
    mName = (EditText) findViewById(R.id.editText1); 
    mPassword = (EditText) findViewById(R.id.editText2); 
    mButton = (Button) findViewById(R.id.button1); 

    mName.addTextChangedListener(mWatcher); 
    mPassword.addTextChangedListener(mWatcher); 
} 

private TextWatcher mWatcher = new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 
     boolean nameNotEmpty = mName.getText().length()>0; 
     boolean pwNotEmpty = mPassword.getText().length()>0; 
     mButton.setEnabled(nameNotEmpty && pwNotEmpty); 
    } 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 
}; 
0

voglio solo aggiungere che il controllo sarà NON lavoro se il InputType del EditText è una password (o simili) e il fuction alla prova la lunghezza del testo (vedi altre risposte) si chiama da

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) {...} 

Quindi è importante chiamare il controllo dal

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

hey, se si desidera utilizzare il codice C ut il pulsante deve cambiare colore se l'editText1_id e l'editText1_passcode è in e in 4 cifre

checkValidation(); 

    editText1_id.addTextChangedListener(mWatcher); 
    editText1_passcode.addTextChangedListener(mWatcher); 
} 

private void checkValidation() { 
    // TODO Auto-generated method stub 

    if ((TextUtils.isEmpty(editText1_id.getText())) 
      || (TextUtils.isEmpty(editText1_passcode.getText()))) 
     loginbtn.setEnabled(false); 
    else 
     loginbtn.setEnabled(true); 

} 


TextWatcher mWatcher = new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, 
           int count) { 
     // TODO Auto-generated method stub 
     checkValidation(); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
            int after) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     // TODO Auto-generated method stub 

    } 
}; 

} 
Problemi correlati