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??

Winona
fonte

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;
}
cvaldemar
fonte
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...

SBJ
fonte
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

MilapTank
fonte
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;
}
Houcine
fonte
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
    }
}
Qw4z1
fonte
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
}
Zar E Ahmer
fonte
11

Tente isto

TextUtils.isEmpty(editText.getText());
martyglaubitz
fonte
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) {

        }
       });
Igor Zelaya
fonte
7

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

public boolean isEditTextEmpty(EditText mInput){
   return mInput.length() == 0;
}
JPMagalhaes
fonte
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. :)

sigcontSE
fonte
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;
}
Jorgesys
fonte
4
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

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

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

Eu usei TextUtilspara isso:

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}
wildapps
fonte
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();
            }
Mirza Awais Ahmad
fonte
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.

TheOddAbhi
fonte
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;
            }
Sami Khan
fonte
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;
}
dreinoso
fonte
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 ....

Jothi
fonte
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);
        }
    }
});
Aris_choice
fonte
1

use TextUtils.isEmpty("Text here");para código de linha única

Anand Savjani
fonte
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();
}
Emiliano Spirito
fonte
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

Aamirkhan
fonte
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!");
                }
            }
        }
    });
hoang lam
fonte
0
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}
Sydwell
fonte
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.

Saad Farooq
fonte
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();
}
Guru
fonte
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

Sharmad Desai
fonte
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

Maihan Nijat
fonte
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();
            }
            }
            }
taha mosaad
fonte