Required field, fill in before saving

Asked

Viewed 1,711 times

1

I’m trying to validate the fields so it’s mandatory before saving the data.

Follows the code

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cadastro);
    //botão para salvar os dados
    Button btnSalvar = (Button) findViewById(R.id.cadastro_salvar);
    btnSalvar.setOnClickListener(new View.OnClickListener() {

       //irá verificar se os campos estão vazio
        public  void validar(){
            EditText nome = (EditText) findViewById(R.id.cadastro_nome);
            EditText email = (EditText) findViewById(R.id.cadastro_email);
            EditText senha = (EditText) findViewById(R.id.cadastro_senha);
            EditText repsenha = (EditText) findViewById(R.id.cadastro_repetirsenha);

            String texto = nome.getText().toString();
            texto = email.getText().toString();
            texto = senha.getText().toString();
            texto = repsenha.getText().toString();
            if(texto== null || texto.equals("")){
                nome.setError("Este campo é obrigatório");
                senha.setError("Este campo é obrigatório");
                email.setError("Este campo é obrigatório");
                repsenha.setError("Este campo é obrigatório");
            } else {
                //  Toast.makeText(this, "",Toast.LENGTH_SHORT).show();
            }
        }
       //ira salvar os dados 
        @Override
        public void onClick(View view) {
            Toast.makeText(CadastroActivity.this, "Cadastro realizado", Toast.LENGTH_SHORT).show();//serve para cliar a mensagem que aparece rapidamente
            finish();
        }

    });
}

But when I click to save, it doesn’t check the fields first. How to make it check before and then save?

2 answers

2

You need to generate some feedback in the method validate(), in my case I like to use a string and go adding to it the error messages and right in the first line of onClick I check if the string is empty or with some error phrase.

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cadastro);
    //botão para salvar os dados
    Button btnSalvar = (Button) findViewById(R.id.cadastro_salvar);
    btnSalvar.setOnClickListener(new View.OnClickListener() {

        //irá verificar se os campos estão vazio
        public String validar(){
            String texto_erros="";
            EditText nome = (EditText) findViewById(R.id.cadastro_nome);
            EditText email = (EditText) findViewById(R.id.cadastro_email);
            EditText senha = (EditText) findViewById(R.id.cadastro_senha);
            EditText repsenha = (EditText) findViewById(R.id.cadastro_repetirsenha);

            if (nome.getText().toString().equals("")){
                texto_erros = "Campo nome é obrigatório\n";
                nome.setError("Este campo é obrigatório");
            }
            if (email.getText().toString().equals("")){
                texto_erros = texto_erros+"Campo email é obrigatório\n";
                email.setError("Este campo é obrigatório");
            }
            if (senha.getText().toString().equals("")){
                texto_erros = texto_erros+"Campo senha é obrigatório\n";
                senha.setError("Este campo é obrigatório");
            }
            if (repsenha.getText().toString().equals("")){
                texto_erros = texto_erros+"Campo repetir senha é obrigatório\n";
                repsenha.setError("Este campo é obrigatório");
            }
            if (!senha.getText().toString().equals( repsenha.getText().toString() )){
                texto_erros = texto_erros+"Senhas estão diferentes\n";
                repsenha.setError("Senhas estão diferentes");
            }

            return texto_erros;
        }
        //ira salvar os dados 
        @Override
        public void onClick(View view) {
            String erros = validar();
            if (erros.equals("")) {
                //Codigo de salvar es dados...
                Toast.makeText(CadastroActivity.this, "Cadastro realizado", Toast.LENGTH_SHORT).show();//serve para cliar a mensagem que aparece rapidamente
                finish();
            }else {
                Toast.makeText(CadastroActivity.this, "Verifique os erros: "+erros, Toast.LENGTH_SHORT).show();//Detectado erros
            }
        }

    });
}

0


/*
 * fazer essas variaveis na propria classe da activity
 */
    EditText nome = (EditText) findViewById(R.id.cadastro_nome);
    EditText email = (EditText) findViewById(R.id.cadastro_email);
    EditText senha = (EditText) findViewById(R.id.cadastro_senha);
    EditText repsenha = (EditText) findViewById(R.id.cadastro_repetirsenha);

    public void onClick(View view){
        String texto = nome.getText().toString(),
                textoEmail = email.getText().toString(),
                textoSenha = senha.getText().toString(),
                textoSenhaRpt = repsenha.getText().toString();

        if (validar(texto,textoEmail,textoSenha,textoSenhaRpt)){
            //Se estiver validado pode salvar
            doSalvar();
        }
    }

    /**
     * Retorna se os campos estão validados
     * true para sim, false se faltar alguma validação
     * @return
     */
    public  boolean validar(String texto, String textoEmail, String textoSenha, String textoSenhaRpt){

        boolean validado = true;

        if (texto.length()<3){
            //se nome tiver menos de 3 letras
            validado = false;
            nome.setError("Nome inválido");//adiciona erro no componente na tela
        }
        if (!textoEmail.contains("@")){
            //verifica se tem @ no campo do email, e nega a condição no comeco, se não tiver @ não é valido
            validado = false;
            email.setError("Email inválido");//adciona erro no componente;            
        }

        if (!textoSenha.equals(textoSenhaRpt)){
            //verifica se as senhas sao iguais
            validado = false;
            repsenha.setError("Senha diferente da anterior");//add erro no componente
        }
        return validado;
    }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.