Como validar um campo de texto? [Resolvido]

3 respostas
E

Oi, pessoal.

Tenho a seguinte dúvida, eu estou enviando um EditText, mas preciso me certificar que ele não está vazio antes de enviar para o método, porquê ele cria um array e se estiver vazio eu tenho o erro:

java.lang.ArrayIndexOutOfBoundsException

Alguém sabe como?

Tentei da seguinte forma, mas sem sucesso.

protected void validaCampo( EditText origem){
    	
    	if ( origem== null) {Toast.makeText(SAXActivity.this, "Digite um endereço!", Toast.LENGTH_LONG).show();  }
}

3 Respostas

T

Opa,

na variavel origem, você precisa fazer:

Ai sim você consegue saber se a String dentro do EditText está vazia ou não.

E

Oi, eu criei conforme orientado, mas o erro continua e eu não consigo localizar aonde está.

Eu sei que o erro está ocorrendo por causa do campo estar vazio, porém eu não estou conseguindo colocar a validação no local certo para impedir que seja enviado vazio.

A classe é esta abaixo:

package sax.teste.xml;

import javax.xml.datatype.Duration;

import com.google.android.maps.MapActivity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SAXActivity extends Activity {

	XMLGettersSetters data;
	

    @Override
    public void onCreate(Bundle savedInstanceState) {
    	
    	super.onCreate(savedInstanceState);
    	
        setContentView(R.layout.main);
       
        Button b =(Button)findViewById(R.id.btnCalcular);
		 
	   b.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				
				buscarMapa();
				

			}
		});
		
    }
    
        
		protected void buscarMapa(){		
			TextView latitude[];
			TextView longitude[];
			TextView distancia[];
			TextView duracao[];
			TextView endereco_ini[];
			TextView endereco_fin[];
			View layout = findViewById(R.id.layout);
			final EditText origem = (EditText) findViewById(R.id.editTextPartida);
			final EditText destino = (EditText) findViewById(R.id.editTextDestino);
			String origemText =origem.getText().toString();
			String destinoText =destino.getText().toString();
			
			
			validaCampo(origem);
			validaCampo2(destino);
		
		if (checkInternetConnection())
		{
		XMLService myXMLService = new XMLService();
		
				
		XMLService.googleXMLData(origem, destino);
		
        data = XMLHandler.data;
       
		
		latitude = new TextView[data.getLatitude().size()];
		longitude = new TextView[data.getLongitude().size()];
		
		endereco_ini = new TextView[data.getEndereco_ini().size()];
		endereco_fin = new TextView[data.getEndereco_fin().size()];
		
		distancia = new TextView[data.getDistancia().size()];
		duracao = new TextView[data.getDuracao().size()];
		
		
			//pega o nome do endereço inicial
			endereco_ini[0] = new TextView(this);
			endereco_ini[0].setText(data.getEndereco_ini().get(0));
			((ViewGroup) layout).addView(endereco_ini[0]);
			
			endereco_fin[0] = new TextView(this);
			endereco_fin[0].setText(data.getEndereco_fin().get(0));
			((ViewGroup) layout).addView(endereco_fin[0]);
			
			int i =data.getDistancia().size()-1;
			distancia[0] = new TextView(this);
			int y =Integer.parseInt( data.getDistancia().get(i))*2;
			distancia[0].setText("Distancia "+y);
			((ViewGroup) layout).addView(distancia[0]);
			
			int id =data.getDuracao().size()-1 ;
			duracao[0] = new TextView(this);
			duracao[0].setText("Duraçao: "+data.getDuracao().get(id));
			((ViewGroup) layout).addView(duracao[0]);
			
			
			setContentView(layout);
			//Intent intent = new Intent(this, Mapa.class);
			//startActivity(intent);
		
		}
	
		else{onStart1();}
		
		 
    }

    private boolean checkInternetConnection() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        // test for connection
        if (cm.getActiveNetworkInfo() != null
                && cm.getActiveNetworkInfo().isAvailable()
                && cm.getActiveNetworkInfo().isConnected()) {
            return true;
        } else {
            
            return false;
        }
    }

    
       
    protected void onStart1(){
    	
    	    	
    	if (!AppStatus.getInstance(this).isOnline(this)) { 
			
		 AlertDialog.Builder alerta = new AlertDialog.Builder(SAXActivity.this);
			alerta.setTitle("Alerta de Serviço");
			alerta.setMessage("Ative o serviço de Internet!!!");
			//Log.v("Home", "############################You are not online!!!!");
			
			alerta.setPositiveButton("OK", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					Toast.makeText(SAXActivity.this, "OK", Toast.LENGTH_LONG);
					finish();
				}
			});
			alerta.show();
		 
		 }
    }
    
    protected void validaCampo( EditText origem){
    	
    	if ( origem.getText().toString().equals(null) ) {Toast.makeText(SAXActivity.this, "Data inválida!", Toast.LENGTH_LONG).show();  }
		 
		 
    }
    
    protected void validaCampo2( EditText destino){
    	
    	if ( destino.getText().toString().equals("") ) {Toast.makeText(SAXActivity.this, "Data inválida!", Toast.LENGTH_LONG).show();  }
		 
		 
    }
    
  
}

Podem me ajudar?
Já tentei de varias formas, mas ainda sem sucesso.

E

Pessoal obrigado pela ajuda.

O método para validar um campo EditText funciona perfeitamente eu que coloquei no lugar errado a validação

protected void validaCampo( EditText origem){
    	
    	if ( origem.getText().toString().equals(null) ) {Toast.makeText(SAXActivity.this, "Data inválida!", Toast.LENGTH_LONG).show();  }
		 
		 
    }

Muito obrigado a todos pela ajuda.

Criado 1 de novembro de 2012
Ultima resposta 3 de nov. de 2012
Respostas 3
Participantes 2