Как в инит-ой строке, чтобы одно из его значений


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

вот пример моих предпочтений.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 "fied, чтобы выбрать" 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>

Есть Идеи?

4 70

4 ответа:

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

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

в дополнение к ответу Свена, вы должны вызвать метод 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);
  ...
  }
}

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