Validar EditText Android

4 respostas
java
S

Ola pessoal estou tentando validar uns editTexts para o android so que estou tendo uns problemas, estou usando o android studio 1.5, consigo validar os campos ele mostra o erro caso o usuário não digitar nada, mas quando ele digita nos campos alfanuméricos a mensagem de erro não desaparece.

segue meu método de validar e meu xml;

public void validarCampos(View view) {

String tp     = edtNtp.getText().toString();
    String ender  = edtRua.getText().toString();
    String num    = edtNum.getText().toString();
    String comple = edtComplemento.getText().toString();
    String bairro = edtBairro.getText().toString();

    boolean validar = true;

    if(tp == null || tp.equals("")){
        validar = false;
        edtNtp.setError(getString(R.string.valEdtNtp));
    }
    if(ender == null || ender.equals(""){
        validar = false;
        edtRua.setError(getString(R.string.valEdtRua));
    }
    if(num == null || num.equals("")){
        validar = false;
        edtNum.setError(getString(R.string.valEdtNum));
    }
    if(comple == null || comple.equals("")){
        validar = false;
        edtComplemento.setError(getString(R.string.valEdtComple));
    }
    if(bairro == null || bairro.equals("")){
        validar = false;
        edtBairro.setError(getString(R.string.valEdtBairro));
    }
}

xlm

<!-- Campo Numero Tp -->
    <EditText
        android:id="@+id/edtNtp"
        android:layout_width="153dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="@string/edtNtp"
        android:inputType="phone"/>

    <!-- Linear Layout para os campos Nome da Rua e Numero -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <!-- Campo Endereço Tp -->
        <EditText
            android:id="@+id/edtRua"
            android:layout_width="208dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:hint="@string/edtRua"
            android:inputType="text"/>

        <!-- Campo Numero de Endereço tp  -->
        <EditText
            android:id="@+id/edtNum"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="10dp"
            android:hint="@string/edtNum"
            android:inputType="number"/>

    </LinearLayout>

    <!-- Campo Complemento -->
    <EditText
        android:id="@+id/edtComplemento"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="@string/edtComplemento"
        android:inputType="text"/>

    <!-- Campo Bairro -->
    <EditText
        android:id="@+id/edtBairro"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="40dp"
        android:hint="@string/edtBairro"
        android:inputType="text"/>


    <!-- Button Informação Armario, Caixa, Par, Serie e SSTP  -->
    <Button
        android:id="@+id/btnDados"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:text="@string/btnDados" />

    <!-- Button Novo  -->
    <Button
        android:id="@+id/btnNovo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_weight="2"
        android:text="@string/btnNovo" />

    <!-- Button Salvar  -->
    <Button
        android:id="@+id/btnSalvar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_weight="2"
        android:text="@string/btnSalvar"
        android:onClick="validarCampos"/>

    <!-- Button Cancelar  -->
    <Button
        android:id="@+id/btnCancelar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_weight="0.61"
        android:text="@string/btnCancelar" />

</LinearLayout>

4 Respostas

L

Fala Sidnei,

Você está tentando validar os números digitados como se fossem Strings e na verdade eles são Integers, porque no seu XML você definiu o inputType deles como number, pra resolver é simples, faça o seguinte:

Crie uma váriavel int que vai converter o seu valor string pra int, dessa forma:

final int value = Integer.valueOf(num);

Agora você tem uma váriavel chamada value que contém o valor digitado no EditText como um inteiro.

Agora você pode fazer a validação como inteiros, segue um exemplo:

if (value == 0) {  
    validar = false;
    edtNum.setError(getString(R.string.valEdtNum));
}

O valor padrão de um inteiro é 0, então se o usuário não digitar nada, ele chegará no momento da validação como 0.

Abraços.

S

Ola Leandro

Obrigado pela resposta vou testar aqui, mas so pra adiantar os campos que nao estao funcionando nao são os que recebem inteiros, e sim strings nao sei porque, os campos que recebem no xml number funcionam perfeitamente mas o que recebem text nao funcionam.

S

Leandro, sou eu novamente incomodando, fiz uns teste aqui e mudando para esse código ele trava a aplicação. Você por acaso não teria um exemplo de validação de vários campos de editTexts pra me mostrar.

J

Bom dia meu amigo,

Veja se este link te ajuda:

Criado 20 de abril de 2016
Ultima resposta 21 de mar. de 2018
Respostas 4
Participantes 3