#android #android_sdk #android_shared_preferences
Для хранения настроек Android-приложения хочу использовать SharedPreferences. Но как я понял они изменяются уже в процессе работы программы. А как задать их начальные значения которые они имеют когда приложение только установленно?
Ответы
Ответ 1
Когда вы получаете значение из SharedPreferences, нужно также задать значение, которое вернётся, если по этому ключу ещё ничего не было записано. Например: SharedPreferences sharedPref = getSharedPreferences("имя файла", Context.MODE_PRIVATE); int value = sharedPref.getInt("ключ", 5); В данном случае, мы получим записанное в файл значение, если оно там есть. Иначе мы получим число 5. Так можно задать значения по умолчанию. Несложно будет сделать сброс настроек до изначальных. SharedPreferences sharedPref = getSharedPreferences("имя файла", Context.MODE_PRIVATE); Editor editor = sharedPref.edit(); editor.clear(); editor.apply(); Все записанные значения из файла удалятся, и мы снова будем получать дефолтные значения, пока туда что-нибудь не запишем.Ответ 2
Ели в приложении есть PreferenceActivity или фрагмент, то там устанавливается значение по умолчанию для каких то параметров, это можно сделать программно, а можно по простому через XML. Вот , меню, например, для настройки текста в активности, а key это ключ по которому можно достучаться до настройки. menu.xml:где: - 1
- 2
- 3
в самом фрагменте настроек PreferenceFragment ему можно повесить слушатель в методе onSharedPreferenceChanged, например снэкбар для уведомления о том, что настройка изменена: if (key.equals(getString(R.string.list_preference_1))) { snackbar = Snackbar.make(getActivity().findViewById(android.R.id.content),"Размер шрифта изменен", Snackbar.LENGTH_LONG); View snackBarView = snackbar.getView(); TextView textView = snackBarView.findViewById(android.support.design.R.id.snackbar_text); textView.setTextColor(ContextCompat.getColor(getActivity(), android.R.color.white)); snackbar.show(); } А вот так можно вызвать настройку в активности или там где она нужна и привязать к ней нужные текстВью: private static final int TEXT_SIZE_SMALL = 14, TEXT_SIZE_MID = 18,TEXT_SIZE_LARGE = 22 ; private void getSetting() { String txt_view_size = preferences.getString(getString(R.string.list_preference_1), "1"); //это значение по умолчанию if (txt_view_size.contains("2")) { txt_view.setTextSize(TEXT_SIZE_MID); } else if (txt_view_size.contains("3")) { txt_view.setTextSize(TEXT_SIZE_LARGE); } else { txt_view.setTextSize(TEXT_SIZE_SMALL); } } так вы получите настройку по умолчанию и возможность менять её через меню настроек - Мелкий
- Средний
- Крупный
Комментариев нет:
Отправить комментарий