Этот вопрос уже имеет ответ здесь:
Моя проблема состоит в том, что то, когда я запускаю приложение и пользователя, не открыло мой PreferenceActivity
таким образом, когда я получаю их, не получают значений по умолчанию, определенных в моем файле preference.xml.
Файл preference.xml:
Отрывок от моего основного вида деятельности (onCreate
метод):
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String pref1 = appPreferences.getString("pref1", null);
В результате я заканчиваю с a null
значение.
В onCreate ()
вашего основного Activity
просто вызовите метод PreferenceManager.setDefaultValues ()
].
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
Будет прочитан ваш файл preference.xml
и установлены значения по умолчанию, определенные в нем. Установка для аргумента readAgain
значения false
означает, что значения по умолчанию будут установлены только в том случае, если этот метод никогда не вызывался в прошлом, поэтому вам не нужно беспокоиться о переопределении пользовательских настроек каждый раз. время создания вашего действия
.
Ваш вызов getString ()
имеет null
в качестве второго параметра. Измените его на желаемое значение по умолчанию.
Я буду краток. :)
strings.xml (на самом деле у меня есть prefs.xml исключительно для предпочтений):
<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>
preferences.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));