Как запустить ListPreference для одного из своих значений

Я пытаюсь установить defaultValue в элемент ListPreference.

Вот пример моего файла preference.xml:

<ListPreference android:key="notification_delay"
    android:title="@string/settings_push_delay"
    android:entries="@array/settings_push_delay_human_value"
    android:entryValues="@array/settings_push_delay_phone_value"
    android:defaultValue="????">
</ListPreference>

Два массива:

<string-array name="settings_push_delay_human_value">
    <item>every 5 minutes</item>
    <item>every 10 minutes</item>
    <item>every 15 minutes</item>
</string-array>
<string-array
    name="settings_push_delay_phone_value">
    <item>300</item>
    <item>600</item>
    <item>900</item>
</string-array>

Когда я перехожу к активности предпочтений, ни один элемент ListPreference не выбран. Я попытался установить значение int как 1 в "android: defaultValue", чтобы выбрать "10 минут", но он не работает.

<ListPreference android:key="notification_delay"
    android:title="@string/settings_push_delay"
    android:entries="@array/settings_push_delay_human_value"
    android:entryValues="@array/settings_push_delay_phone_value"
    android:defaultValue="1">
</ListPreference>

Любая идея?

Ответ 1

Вам нужно указать значение. Таким образом, чтобы получить первую запись, выбранную по умолчанию, укажите defaultValue="300" в вашем примере.

Ответ 2

Случилось, что в такой ситуации. Указание постоянного значения по умолчанию. Но графически не было выбрано. Я удалил данные приложения. И тогда это сработало, как ожидалось. Таким образом, явное может быть полезно в dev time при добавлении новых элементов XxxPreference.

Ответ 3

В дополнение к Sven ответ, вы должны вызвать метод setDefaultValues ​​() в стартовом действии. Это будет установлено после всех значений по умолчанию.

public class MainActivity extends Activity {
  protected void onCreate(final Bundle savedInstanceState) {
  // Set all default values once for this application
  // This must be done in the 'Main' first activity
  PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
  ...
  }
}

Ответ 4

Если это допустимое значение из списка, переустановите приложение. Он будет работать.