3
respostas

Shared Preferences em RadioGroup

Boa tarde,

Estou com a seguinte duvida quanto a este xml abaixo:

<RadioGroup
        android:id="@+id/radioGroupOpcoes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="132dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <RadioButton
            android:id="@+id/radioButtonEmpregado"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/radioEmpregado" />

        <RadioButton
            android:id="@+id/radioButtonDesempregado"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/radioDesempregado" />

        <RadioButton
            android:id="@+id/radioButtonNaoProcura"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/radio_nao_procura_ocupacao" />
    </RadioGroup>

Estou usando o Shared Preferences para salvar o valor informado ao fechar o aplicativo, ou seja, ao chamar o metodo OnStop().. EU ja consegui recuperar os dados de um edittext, mas, como faço para pegar e salvar os dados de um RadioGroup?

Obrigado

3 respostas

Olá Matheus,

No seu caso você precisa buscar o componente que representa o RadioGroup e perguntar pra ele qual o id da opção que está selecionada. Uma vez que você tenha o id, aí é só buscar o componente e fazer um getText() pra descobrir a opção selecionada, como no exemplo abaixo:

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroupOpcoes);
int idSelecionado = radioGroup.getCheckedRadioButtonId();
RadioButton radioButtonSelecionado = (RadioButton) findViewById(idSelecionado);
String opcaoSelecionada = radioButtonSelecionado.getText();

Boa noite, obrigado.

Mas neste caso eu estaria buscando a String dele, por exemplo teria que dar o putString para salvar como Shared Preferences? E para retornar ele?

Salvar a string seria uma opção mas pode não ser a mais indicada. Uma outra opção seria pegar o índice do radio dentro do radio group. Para isso você pode fazer:

int indiceSelecionado = radioGroup.indexOfChild(radioButton);

Depois para recuperar o radio button pelo índice você poderia fazer:

RadioButton radioSelecionado = radioButtonGroup.getChildAt(indiceSelecionado);

Desse modo você pode salvar o índice e não depende de encontrar a opção pela string.