Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Ajuda com radioButton

Olá, me baseando no código do curso estou desenvolvendo um aplicativo, utilizei um enum e estou pegando os valores vindos de um radioGroup (com dois radiosButtons), o problema é que sempre vem com valor -1 de lá. E por conseguinte ele considera todo tipo de usuário "ADVOGADO" Por que motivos?

    private TipoUsuario tipoUsuarioCadastro;


    public CadastroHelper(Cadastro activity){
        campoEmail = (EditText) activity.findViewById(R.id.email_cadastro);
        campoSenha = (EditText) activity.findViewById(R.id.senha_cadastro);
        campoSenhaRep = (EditText) activity.findViewById(R.id.senha_cadastro_2);
        radioTipoUsuario = (RadioGroup) activity.findViewById(R.id.tipo_usuario);
        tipoUsuario(radioTipoUsuario);
    }

    // o cadastro não está funcionando, sempre cadastrando como advogado e pegando o ID -1
    private void tipoUsuario(RadioGroup radioTipoUsuario) {
        int tipoSelecionado = radioTipoUsuario.getCheckedRadioButtonId();
        if(tipoSelecionado == R.id.preciso_advogado){
            tipoUsuarioCadastro = tipoUsuarioCadastro.CLIENTE;
        }else{
            tipoUsuarioCadastro = tipoUsuarioCadastro.ADVOGADO;
        }
    }
4 respostas

Olá André,

Olhando aqui rapidamente o código tá parecendo correto, vamos dar uma olhada no layout dessa sua tela. Posta aqui o xml desse layout pra ver se a gente encontra algo de estranho por lá.

  <RadioGroup
            android:id="@+id/tipo_usuario"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp">

            <RadioButton
                android:checked="true"
                android:id="@+id/sou_advogado"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sou Advogado (a)" />

            <RadioButton
                android:id="@+id/preciso_advogado"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sou Cliente" />
        </RadioGroup>

Olá André,

Em que momento e em que classe você instancia o CadastroHelper? Como ele já busca o tipo de usuário no construtor, a posição onde ele é instanciado pode estar influenciando o resultado. Se ele é criado antes do usuário ter chance de interagir com a aplicação então faria sentido ele devolver -1 pois não tem nenhum radio selecionado ainda.

solução!

Oi Jeferson, hoje de tarde tava pensando sozinho na faculdade aí me deu um estalo de como resolver o problema hahahaha, pensei que poderia ter algo a ver com os Listeners foi então que modifiquei esse código para

    private void tipoUsuario(RadioGroup radioTipoUsuario) {
        radioTipoUsuario.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId == R.id.preciso_advogado){
                    tipoUsuarioCadastro = tipoUsuarioCadastro.CLIENTE;
                }else if(checkedId == R.id.sou_advogado){
                    tipoUsuarioCadastro = tipoUsuarioCadastro.ADVOGADO;
                }
            }
        });
    }

e agora bombou! :)