Shared Preferences with Radio Button

0

I have a set of RadioGroup with 3 radios buttons, and I need to save it in a shared preferences.

XML:

 <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>

Java:

public class PrincipalActivity extends AppCompatActivity {
private EditText edtnome;
private RadioGroup valor;
private String opcoes = "";
private SharedPreferences save;
private SharedPreferences.Editor editor;
private int indiceSelecionado;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);

    edtnome = (EditText) findViewById(R.id.editTextNome);
    valor = (RadioGroup) findViewById(R.id.radioGroupOpcoes);
    save = getSharedPreferences("save",MODE_PRIVATE);
    edtnome.setText(save.getString("nomeEdit", ""));
}

@Override
protected void onStop() {
    /*
    Ao ser chamado o metodo onStop ou seja, após a aplicação parar é feito um putString
    do nome digitado pelo usuário, assim ele grava o ultimo nome digitado para que quando
    volte para a aplicação o campo Nome já esta preenchido
    */
    super.onStop();
    editor = save.edit();
    editor.putString("nomeEdit", edtnome.getText().toString());
    editor.commit();
}

I need in the OnStop method to save the informed radio, like the text.

    
asked by anonymous 17.04.2018 / 17:07

1 answer

1

Solved with the code below:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);

    edtnome = (EditText) findViewById(R.id.editTextNome);
    valor = (RadioGroup) findViewById(R.id.radioGroupOpcoes);
    save = getSharedPreferences("save",MODE_PRIVATE);

    //Recupera a chave nomeEdit e insere no EditText edtnome
    edtnome.setText(save.getString("nomeEdit", ""));

    //Recupera o valor do indiceSelecionado
    indiceSelecionado = save.getInt("chave_radio", 0);
    //Executa a condição abaixo para ver qual o ultimo ID que fora salvo, ou seja
    //qual o ultimo radioButton foi marcado
    if(indiceSelecionado == R.id.radioButtonEmpregado){
        valor.check(R.id.radioButtonEmpregado);
    }else if (indiceSelecionado == R.id.radioButtonDesempregado){
        valor.check(R.id.radioButtonDesempregado);
    }else if(indiceSelecionado == R.id.radioButtonNaoProcura){
        valor.check(R.id.radioButtonNaoProcura);
    }


    //Toast.makeText(this, "Id: " + indiceSelecionado, Toast.LENGTH_SHORT).show();

}

@Override
protected void onStop() {
    /*
    Ao ser chamado o metodo onStop ou seja, após a aplicação parar é feito um putString
    do nome digitado pelo usuário, assim ele grava o ultimo nome digitado para que quando
    volte para a aplicação o campo Nome já esta preenchido
    */
    super.onStop();
    /*
    * A variavel indiceSelecionado pega o ID do radio button que esta marcado
    * dessa maneira é salvo ela com uma chave do tipo chave_radio, para assim
    * recuperar a mesma no método Oncreate
    * */
    indiceSelecionado = valor.getCheckedRadioButtonId();
    editor = save.edit();
    editor.putString("nomeEdit", edtnome.getText().toString());
    editor.putInt("chave_radio", indiceSelecionado);
    editor.commit();
}
    
18.04.2018 / 04:00