Существует много вопросов о сохранении состояния переключателей в общих настройках, но ни одно из них не обеспечивает решение, которое я ищу.Как хранить и получать доступ к радиолампам из общих настроек?
Я создаю 15 групп радиостанций и 4 радиокнопки внутри каждой группы радиосвязи в цикле for. Группы радио имеют уникальный идентификатор от 1 до 15 и переключатели имеют идентификаторы в пределах от 100 до 159.
Это код, я использую, чтобы сохранить радио кнопки ID:
public void saveArray(int[] array, String arrayName) {
SharedPreferences prefs = getActivity().getSharedPreferences("preferencename", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++) {
editor.putInt(arrayName + "_" + i, array[i]);
}
editor.commit();
}
array
содержит уникальный идентификатор всех этих переключателей, которые были проверены, и я протестировал вышеуказанный код, он работает отлично, но проблема в том, что я не могу получить к нему доступ.
Это код, который я использую для извлечения кнопки радио ID:
public void loadArray(String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
int size = prefs.getInt(arrayName + "_size", 0);
int array[] = new int[size];
for(int i=0;i<size;i++) {
array[i] = prefs.getInt(arrayName + "_" + i, 0);
}
}
Like saveArray
, loadArray
также работает. Массив заполнен правильными идентификаторами кнопок. Проблема начинается сейчас - я не могу получить доступ к этим радио-кнопки, я не могу сделать findViewById()
потому, что доступен только в onCreateView()
Так что это не будет работать внутри loadArray
for(int i=0; i<size; i++) {
RadioButton radio1 = (RadioButton) findViewById(array[i]);
}
Возможное решение для findViewById
хранит представления в onCreateView()
и затем обращается к нему позже. Так что я создал массив Radio Button
RadioButton[] allRadio = new RadioButton[15];
Теперь внутри onCheckedChanged
, я добавляю выбранные радиокнопок массива:
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton radio = (RadioButton) rootView.findViewById(i);
String selectedValue = radio.getText().toString();
allRadio[radioGroup.getId()-1] = radio;
}
Приведенный выше код прекрасно сохраняет радиокнопки внутри массива, но теперь Я не могу их спасти! Вы можете хранить int, string и т. Д. В общих настройках, но не с помощью переключателей! Решением этого может быть сохранение идентификатора кнопки пульта, но тогда та же проблема начнется снова, что findViewById()
недоступен.
Ну, вы сделали это так просто. Возвращение массива получило трюк, спасибо! –