1
resposta

Problemas para pegar info do RadioButton na classe FormularioHelper

Pessoal, estou com problema para pegar a informação de um radioButton que tenho na minha classe FormularioActivity e passa-la para a FormularioHelper onde estou reunindo as informações do Cliente.

Este método retorna certinho o valor do radio button selecionado

public void onRadioButtonClicked(View view) {
        radioGroup = findViewById(R.id.radio_group);
        int selectedId = radioGroup.getCheckedRadioButtonId();
        radioButton = findViewById(selectedId);
        Toast.makeText(FormularioActivity.this, radioButton.getText() , Toast.LENGTH_SHORT).show();
    }

Aí na classe FormularioHelper, não sei como puxar a informação da mesma forma que eu puxo dos outros componentes da minha tela.

public class FormularioHelper {

private EditText campoNome; private EditText campoTelefone; private EditText campoEmail; private RadioGroup radioGroup; private RadioButton radioButton;

public FormularioHelper(FormularioActivity activity) {

//Pega as informações digitadas no campo do nome do cliente campoNome = activity.findViewById(R.id.campo_nome); campoTelefone = activity.findViewById(R.id.campo_telefone); campoEmail = activity.findViewById(R.id.campo_email);

}

public Cliente pegaCliente(){ Cliente cliente = new Cliente(); cliente.setNome(campoNome.getText().toString()); cliente.setTelefone(campoTelefone.getText().toString()); cliente.setEmail(campoEmail.getText().toString());

return cliente; }

}

Se alguém puder me ajudar eu agradeço imensamente.

1 resposta

Oi Thiago, blz?

Para pegar as informações de um RadioButton por meio de um RadioGroup, primeiro você vai precisar da referência do mesmo, então, você pode chamar o método setOnCheckedChangeListener() que te permite implementar um listener para mudança marcação entre os radio buttons. Em um exemplo prático a implementação fica da seguinte maneira:

RadioGroup opcoes = findViewById(R.id.meu_radio_button);
        opcoes.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int idRadioButton) {
                RadioButton opcaoSelecionada = radioGroup.findViewById(idRadioButton);
                String textoOpcaoSelecionada = opcaoSelecionada.getText().toString();
                Toast.makeText(MainActivity.this, textoOpcaoSelecionada, Toast.LENGTH_SHORT).show();
            }
        });

Esse código apresenta um Toast do botão marcado cada vez que ele é marcado. Caso o que você precisa é apenas do valor da opção marcada quando, por exemplo, um botão de cadastrar for tocado, basta você pegar o valor da seguinte maneira:

RadioButton radioButtonMarcado = opcoes.findViewById(opcoes.getCheckedRadioButtonId());
String valorDoBotaoMarcado = radioButtonMarcado.getText().toString();

De uma maneira resumida a base para pegar um RadioButton é buscando-o por meio do RadioGroup :)

Se tiver mais dúvidas é só avisar.

[]s