Вы должны сохранить состояние переключателей, если оно изменилось в некотором постоянстве. Для настроек SharedPreferences
- оптимальный выбор. Итак,
- Создать коллекцию возможных
RadioButton
с в группе (после оператора setContent
в методе onCreate
):
RadioGroup rGroup = findViewById(R.id.radioGroup1);
List<RadioButton> buttons = new ArrayList();
buttons.add(rGroup.findViewById(R.id.radioButton1);
buttons.add(rGroup.findViewById(R.id.radioButton2);
// ...
}
После изменения состояния (например, в
OnCheckedChangeListener
из
RadioGroup
) сохраните его в
SharedPreferences
:
// find RadioButton
RadioGroup rGroup = findViewById(R.id.radioGroup1);
RadioButton checkedRadioButton = rGroup.findViewById(rGroup.getCheckedRadioButtonId());
// define selected option value
int selectedOption = 0;
for (int i = 0; i < buttons.size(); i++) {
if (checkedRadioButton.getId() == buttons.get(i).getId()) {
selectedOption = i;
break;
}
}
// write state to SP
getSharedPreferences("my_settings", Context.MODE_PRIVATE).edit().putInt("sel_option", selectedOption).apply()
В операции настройки
onCreate
: прочитайте ранее сохраненное состояние и обновите пользовательский интерфейс соответственно:
int option = getSharedPreferences("my_settings", Context.MODE_PRIVATE).getInt("sel_option", 0);
// set checked for the specific button
buttons.get(option).setChecked(true);