Verifique se o EditText está vazio. [fechadas]


218

Eu tenho 5 EditTextsno android para os usuários a entrada. Gostaria de saber se eu poderia ter um método para verificar todos os 5 EditTextsse eles forem nulos. Há alguma maneira de fazer isso??

Respostas:


367

Eu fiz algo assim uma vez;

EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
    Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
    return;
}

4
sim desculpe, esqueci que você tinha cinco. Você poderia criar uma função que fizesse a mesma coisa e chamá-la cinco vezes - ou poderia percorrer os cinco EditText's.
Cvaldemar 9/06

43
Desculpa ser pedante, mas você funções não escrita em Java são chamados métodos ...
Assistente de

1
se EditText.setInputType (InputType.TYPE_CLASS_NUMBER); número este não está funcionando
Zala Janaksinh

64
vocês estão tornando mais difícil do que precisa ser: TextUtils.isEmpty (editText.getText ());
Martyglaubitz #

4
Eu costumo usar if (usernameEditText.getText () toString () toString () isEmpty ()...)
Daniel Jonker

185
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

OU conforme o audrius

  private boolean isEmpty(EditText etText) {
        return etText.getText().toString().trim().length() == 0;
    }

Se return função falsesignifica edittext é not emptye return truesignifica edittext é empty...


29
+1 Verificação do comprimento é melhor do que verificar a seqüência vazia IMHO. Ajudaria a aparar a string antes de verificar o comprimento, para que os caracteres de espaço em branco não fossem contados. Btw, alguma razão específica de não usar em return etText.getText().toString().trim().length() == 0vez de ramos verdadeiros / falsos?
Audrius

1
bem, acho que a legibilidade e a manutenção do código ...
WiZarD

se EditText.setInputType (InputType.TYPE_CLASS_NUMBER); número, use-o.
Zala Janaksinh

Sim, está funcionando porque depende do comprimento ...
SBJ

private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;} VS 2019
Siddharth Rout

145

Para validar o EditText, use EditText, use o método EditText # setError para mostrar erro e para verificar o valor vazio ou nulo, use a classe android incorporada TextUtils.isEmpty (strVar), que retornará true se strVar tiver comprimento nulo ou zero.

EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();

 if(TextUtils.isEmpty(strUserName)) {
    etUserName.setError("Your message");
    return;
 }

Imagem retirada da pesquisa do Google


você deve adicionar outro )na instrução if.
ʍѳђ ઽ 9 ท

1
@Androidenthusiasts obrigado por mostrar o meu erro de digitação erro que eu atualizar a minha resposta :)
MilapTank

Não foi possível entender o segundo campo "" nomedeusuárioEditText "" "String strUserName = nomedeusuárioEditText.getText (). ToString ();" onde foi declarado?
Sam

@Sam sua meu erro de digitação tenho atualizar a minha resposta usernameEditTexté EditTextobjeto e agora é renomeado para etUserName
MilapTank

1
.toString();não é necessária
MariuszS

36

tente isto:

EditText txtUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = usernameEditText.getText().toString();
if (strUserName.trim().equals("")) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}

ou use a classe TextUtils assim:

if(TextUtils.isEmpty(strUserName)) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}

3
... esta é a melhor maneira de fazer isso. Outros exemplos permitem entradas que não estão sendo contabilizadas.
dell116

29

Bem atrasado para a festa aqui, mas eu apenas tenho que adicionar o TextUtils.isEmpty (CharSequence str) do Android

Retorna true se a sequência for nula ou com comprimento 0.

Portanto, se você colocar seus cinco EditTexts em uma lista, o código completo seria:

for(EditText edit : editTextList){
    if(TextUtils.isEmpty(edit.getText()){
        // EditText was empty
        // Do something fancy
    }
}

isEmpty () cheque does not para o espaço em branco, tente introduzir um espaço
Caça

3
@ Hunt Isso é verdade, mas não seria mais vazio ou nulo. Talvez TextUtils.isEmpty (sUserName.trim ()) seja apropriado para remover todos os espaços em branco, caso o usuário tenha inserido um ou vários espaços em branco?
Qw4z1

isEmpty()leva um CharSequence, que Editablese estende, então não há necessidade de chamá .toString()-lo.
karl

@karl Bom ponto! Atualizei minha resposta.
Qw4z1

19

Outras respostas estão corretas, mas faça isso de uma maneira curta como

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}


7

Por que não desativar o botão se o EditText estiver vazio? IMHO Isso parece mais profissional:

        final EditText txtFrecuencia = (EditText) findViewById(R.id.txtFrecuencia);  
        final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleStartStop);
        txtFrecuencia.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            toggle.setEnabled(txtFrecuencia.length() > 0);
        }

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

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

        }
       });

7

Você pode usar a length()partir de EditText.

public boolean isEditTextEmpty(EditText mInput){
   return mInput.length() == 0;
}

6

Eu costumo fazer o que o SBJ propõe, mas o contrário. Simplesmente acho mais fácil entender meu código verificando resultados positivos em vez de negativos duplos. Você pode estar perguntando como procurar EdiTexts vazios, mas o que você realmente quer saber é se ele possui algum conteúdo e não que não esteja vazio.

Igual a:

private boolean hasContent(EditText et) {
    // Always assume false until proven otherwise
    boolean bHasContent = false; 

    if (et.getText().toString().trim().length() > 0) {
        // Got content
        bHasContent = true;
    }
    return bHasContent;
}

Como SBJ , prefiro retornar "não tem conteúdo" (ou false) como padrão para evitar exceções, porque fiz uma verificação de conteúdo. Dessa forma, você estará absolutamente certo de que umtrue foi "aprovado" pelos seus cheques.

Também acho que a ifchamada parece um pouco mais limpa também:

if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}

É muito dependente da preferência, mas acho isso mais fácil de ler. :)


4

Eu uso esse método, usado trim()para evitar espaços em branco:

EditText myEditText = (EditText) findViewById(R.id.editUsername);
if ("".equals(myEditText.getText().toString().trim()) {
    Toast.makeText(this, "You did not enter a value!", Toast.LENGTH_LONG).show();
    return;
}

um exemplo se você tiver vários EditText´s

if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
        Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
        return;
}

4
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

você pode usar TextUtils.isEmpty como meu exemplo! Boa sorte


3
private boolean hasContent(EditText et) {
       return (et.getText().toString().trim().length() > 0);
}

3

Eu usei TextUtilspara isso:

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}

2

Você também pode verificar todas as seqüências de caracteres EditText em uma condição If: assim

if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
                Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
            }

2

Eu queria fazer algo semelhante. Mas obter o valor do texto da edição e compará-lo como (str=="")se não estivesse funcionando para mim. A melhor opção foi:

EditText eText = (EditText) findViewById(R.id.etext);

if (etext.getText().length() == 0)
{//do what you want }

Funcionou como um encanto.


2

Experimente isso usando as condições If ELSE If. Você pode validar seus campos editText facilmente.

 if(TextUtils.isEmpty(username)) {
                userNameView.setError("User Name Is Essential");
                return;
         } else  if(TextUtils.isEmpty(phone)) {
                phoneView.setError("Please Enter Your Phone Number");
                return;
            }

2

Você pode chamar esta função para cada um dos textos de edição:

public boolean isEmpty(EditText editText) {
    boolean isEmptyResult = false;
    if (editText.getText().length() == 0) {
        isEmptyResult = true;
    }
    return isEmptyResult;
}

1
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);

String UserID = txtUserID.getText().toString();

if (UserID.equals("")) 

{
    Log.d("value","null");
}

Você verá a mensagem no LogCat ....


1

"confira isso, tenho certeza que você vai gostar."

log_in.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        username=user_name.getText().toString();
        password=pass_word.getText().toString();
        if(username.equals(""))
        {
            user_name.setError("Enter username");
        }
        else if(password.equals(""))
        {
            pass_word.setError("Enter your password");
        }
        else
        {
            Intent intent=new Intent(MainActivity.this,Scan_QRActivity.class);
            startActivity(intent);
        }
    }
});


1

com esse código curto, você pode excluir o espaço vazio no início e no final da string. Se a string for "", retorne a mensagem "error", senão você terá uma string

EditText user = findViewById(R.id.user); 
userString = user.getText().toString().trim(); 
if (userString.matches("")) {
    Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
    return; 
}else{
     Toast.makeText(this, "Ok", Toast.LENGTH_SHORT).show();
}

Por favor, adicione uma breve explicação do seu código.
Terru_theTerror

stackoverflow.com/questions/61766882/… você pode me ajudar com o meu problema?
Sunny

0
EditText edt=(EditText)findViewById(R.id.Edt);

String data=edt.getText().toString();

if(data=="" || data==null){

 Log.e("edit text is null?","yes");

}

else {

 Log.e("edit text is null?","no");

}

faça assim para todos os cinco editar texto


0

Você pode usar setOnFocusChangeListener, ele irá verificar quando o foco muda

        txt_membername.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View arg0, boolean arg1) {
            if (arg1) {
                //do something
            } else {
                if (txt_membername.getText().toString().length() == 0) {
                    txt_membername
                            .setError("Member name is not empty, Plz!");
                }
            }
        }
    });

0
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}

0

Eu prefiro usar a ligação da lista ButterKnife e, em seguida, aplicar ações na lista. Por exemplo, no caso de EditTexts, tenho as seguintes ações personalizadas definidas em uma classe de utilitário (neste caso ButterKnifeActions)

public static <V extends View> boolean checkAll(List<V> views, ButterKnifeActions.Check<V> checker) {
    boolean hasProperty = true;
    for (int i = 0; i < views.size(); i++) {
        hasProperty = checker.checkViewProperty(views.get(i), i) && hasProperty;
    }
    return hasProperty;
}

public static <V extends View> boolean checkAny(List<V> views, ButterKnifeActions.Check<V> checker) {
    boolean hasProperty = false;
    for (int i = 0; i < views.size(); i++) {
        hasProperty = checker.checkViewProperty(views.get(i), i) || hasProperty;
    }
    return hasProperty;
}

public interface Check<V extends View> {
    boolean checkViewProperty(V view, int index);
}

public static final ButterKnifeActions.Check<EditText> EMPTY = new Check<EditText>() {
    @Override
    public boolean checkViewProperty(EditText view, int index) {
        return TextUtils.isEmpty(view.getText());
    }
};

E no código da visualização, vinculo os EditTexts a uma lista e aplico as ações quando preciso verificar as visualizações.

@Bind({R.id.edit1, R.id.edit2, R.id.edit3, R.id.edit4, R.id.edit5}) List<EditView> edits;
...
if (ButterKnifeActions.checkAny(edits, ButterKnifeActions.EMPTY)) {
    Toast.makeText(getContext(), "Please fill in all fields", Toast.LENGTH_SHORT).show();
}

E é claro que esse padrão é extensível à verificação de qualquer propriedade em qualquer número de visualizações. A única desvantagem, se você pode chamar assim, é a redundância de visualizações. Ou seja, para usar esses EditTexts, você teria que vinculá-los a variáveis ​​únicas também, para que você possa fazer referência a eles por nome ou precisar fazer referência a eles por posição na lista ( edits.get(0), etc.). Pessoalmente, eu apenas vinculo cada uma delas duas vezes, uma vez para uma única variável e outra para a lista e uso o que for apropriado.


0

Para editarTexto está vazio, tente outro desta maneira simples:

String star = editText.getText().toString();

if (star.equalsIgnoreCase("")) {
  Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}

por que ignorar caso ?!
Tima

0

Experimente: em Kotlin

//button from xml
button.setOnClickListener{                                         
    val new=addText.text.toString()//addText is an EditText
    if(new=isNotEmpty())
    {
         //do something
    }
    else{
        new.setError("Enter some msg")
        //or
        Toast.makeText(applicationContext, "Enter some message ", Toast.LENGTH_SHORT).show()
    }
}

Obrigado


0

O seguinte funciona para mim, tudo em uma declaração:

if(searchText.getText().toString().equals("")) 
    Log.d("MY_LOG", "Empty");

Primeiro, recupero um texto do EditTexte depois o converto em uma string e, finalmente, comparo-o com o ""uso do .equalsmétodo


0

essa função funciona para mim

private void checkempForm () {

    EditText[] allFields = { field1_txt, field2_txt, field3_txt, field4_txt};
    List<EditText> ErrorFields =new ArrayList<EditText>();//empty Edit text arraylist
            for(EditText edit : allFields){
                if(TextUtils.isEmpty(edit.getText())){ 

            // EditText was empty
             ErrorFields.add(edit);//add empty Edittext only in this ArayList
            for(int i = 0; i < ErrorFields.size(); i++)
            {
                EditText currentField = ErrorFields.get(i);
                currentField.setError("this field required");
                currentField.requestFocus();
            }
            }
            }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.