Android: SharedPreference: Значения по умолчанию не набор при запуске

У меня есть 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 папке.

10
задан Allan 1 May 2010 в 21:00
поделиться

1 ответ

Похоже, что они не устанавливаются по свои значения по умолчанию сразу после установки - они кажутся нулевыми.

Это то, что должно произойти.

Я пытаюсь понять, почему мои предпочтения по умолчанию не устанавливаются сразу после установки.

Они и не должны устанавливаться. Приведенный вами XML предпочтений используется только для заполнения PreferenceActivity, не более того. Пока пользователь не откроет PreferenceActivity, предпочтения будут нулевыми, и будут возвращены значения по умолчанию, которые вы предоставили в геттеры SharedPreferences.


UPDATE

Вы можете использовать setDefaultValues() на PreferenceManager, чтобы назначить значения по умолчанию из вашего XML предпочтений в SharedPreferences. Однако, будьте внимательны к времени - это будет выполнять дисковый ввод/вывод, и поэтому в идеале должно выполняться в фоновом потоке.

22
ответ дан 3 December 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: