Validar EditText Android

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>

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.

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.

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.

Bom dia meu amigo,

Veja se este link te ajuda: