У меня есть Listpreferences в моем приложении. Они, кажется, не устанавливают на свои значения по умолчанию прямо после установки - они, кажется, являются пустыми. Я пытаюсь выяснить, почему мои предпочтения по умолчанию не устанавливаются прямо после установки. В моем основном коде я имею:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
InUnits = sp.getString("List1", "defValue");
InAngs = sp.getString("List2", "defValue");
OutUnits = sp.getString("List3", "defValue");
OutAngs = sp.getString("List4", "defValue");
Прямо после того, как вышеупомянутый код выполняется, каждая переменная содержит "defValue" вместо фактических значений, которые я присвоил в своем ListPreference ниже.
Мой предпочтительный XML-файл называют, "settings.xml". Вот то, на что там похож один из ListPreferences:
<ListPreference
android:key="List1"
android:title="Input: Alph"
android:summary="Choose Alph or Ralph"
android:entries="@array/inputAlph"
android:entryValues="@array/input_Alph_codes"
android:dialogTitle="Input Alph"
android:defaultValue="ININ"/>
Вот то, на что похожа часть моего файла strings.xml:
<string-array name="inputUnits">
<item>Alph</item>
<item>Ralph</item>
</string-array>
<string-array name="input_Alph_codes">
<item>ININ</item>
<item>INMM</item>
</string-array>
Когда я вхожу в меню и затем настройки, я вижу, что мои значения по умолчанию проверили (radiobuttoned). Затем, когда я возвращаюсь от меню параметров до моего основного экрана - все хорошо - для жизни!... затем каждому var выше присваивают надлежащее значение по умолчанию.
Это только происходит, когда я сначала устанавливаю свое приложение по телефону. После того, как я перейду к экрану настроек однажды и затем прямо из него, приложение прекрасно и принимает любые изменения установки.
Между прочим, как Вы видите, "List1" является android:key в файле под названием settings.xml в моей res/xml папке.
Похоже, что они не устанавливаются по свои значения по умолчанию сразу после установки - они кажутся нулевыми.
Это то, что должно произойти.
Я пытаюсь понять, почему мои предпочтения по умолчанию не устанавливаются сразу после установки.
Они и не должны устанавливаться. Приведенный вами XML предпочтений используется только для заполнения PreferenceActivity
, не более того. Пока пользователь не откроет PreferenceActivity
, предпочтения будут нулевыми, и будут возвращены значения по умолчанию, которые вы предоставили в геттеры SharedPreferences
.
UPDATE
Вы можете использовать setDefaultValues()
на PreferenceManager
, чтобы назначить значения по умолчанию из вашего XML предпочтений в SharedPreferences
. Однако, будьте внимательны к времени - это будет выполнять дисковый ввод/вывод, и поэтому в идеале должно выполняться в фоновом потоке.