71 votes

Comment initier une ListPreference à l'une de ses valeurs

J'essaie de définir defaultValue sur un élément ListPreference.

Voici un exemple de mon fichier 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>
 

Les deux tableaux:

 <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>
 

Quand je vais dans l'activité de préférence, aucun élément de la ListPreference n'est sélectionné. J'ai essayé de définir une valeur int telle que 1 dans "android: defaultValue" pour sélectionner "10 minutes", mais cela ne fonctionne pas.

 <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>
 

Une idée?

91voto

sven Points 2739

Vous devez spécifier la valeur . Ainsi, pour obtenir la première entrée sélectionnée par défaut, spécifiez defaultValue="300" dans votre exemple.

19voto

coutant Points 141

Est arrivé d'être dans la même situation. Spécifier une valeur par défaut cohérente. Mais graphiquement n'a pas été sélectionné. J'ai effacé les données de l'application. Et puis cela a fonctionné comme prévu. Il est donc utile de clarifier les choses lors de l’ajout de nouveaux éléments XxxPreference.

11voto

En plus de la réponse de Sven, vous devez appeler la méthode setDefaultValues () dans l'activité de départ. Cela définira une fois toutes les valeurs par défaut.

 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);
  ...
  }
}
 

2voto

Percy Vega Points 61

S'il s'agit d'une valeur valide de la liste, réinstallez l'application. Ça va marcher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X