Инициализировать настройки из XML в основном действии
Моя проблема в том, что когда я запускаю приложение, а пользователь не открывает PreferenceActivity
поэтому, когда я получаю их, не получают значения по умолчанию, определенные в моем файле preference.xml.
файл preference.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="applicationPreference" android:title="@string/config"
>
<ListPreference
android:key="pref1"
android:defaultValue="default"
android:title="Title"
android:summary="Summary"
android:entries="@array/entry_names"
android:entryValues="@array/entry_values"
android:dialogTitle="@string/dialog_title"
/>
</PreferenceScreen>
Фрагмент из моей основной деятельности (onCreate
метод):
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String pref1 = appPreferences.getString("pref1", null);
В результате я получаю null
значение.
3 ответа
В onCreate()
вашего основного Activity
просто позвони PreferenceManager.setDefaultValues()
метод.
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
Это будет читать ваши preference.xml
файл и установить значения по умолчанию, определенные там. Настройка readAgain
аргумент false
означает, что это установит значения по умолчанию, только если этот метод никогда не вызывался в прошлом, поэтому вам не нужно беспокоиться о переопределении настроек пользователя каждый раз, когда ваш Activity
создано.
Я буду краток.:)
strings.xml (на самом деле у меня есть prefs.xml исключительно для предпочтений):
<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>
Предпочтения.xml:
android:key="@string/pref_mypref_key"
android:defaultValue="@string/pref_mypref_default"
MyActivity.java:
String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));
Ваш звонок в getString()
имеет null
как второй параметр. Измените это значение по умолчанию, которое вы хотите.