Bonsoir,Par défaut dans un FieldEditorPreferencePage via ScopedPreferenceStore
Avec java 1.7 Je suis en train de remplacer la méthode performApply()
pour un FieldEditorPreferencePage en utilisant un code similaire à l'extrait ci-dessous. (Le code supplémentaire ne fait pas de différence, juste cette méthode)
@Override
public void performApply() {
scopedPreferenceStore.setDefault(PREF_KEY, value);
super.performApply();
}
Essentiellement, je veux mettre à jour la valeur de préférence par défaut pour PREF_KEY
donc quand l'utilisateur clique Restaurez les paramètres par défaut après l'application d'un changement, il utilise la nouvelle valeur et pas l'ancien.
Le problème est que si je fais ceci, quand je réexécute mon programme le nouveau défaut n'est pas stocké. Si je renonce à l'utilisation de setDefault()
, la nouvelle valeur par défaut est enregistrée.
Pour d'apporter des précisions
Avec l'aide setDefault
:
Si je change de préférence A à 100, cliquez sur Appliquer, de préférence le changement A à 25, puis cliquez sur Restaurer les valeurs par défaut, je verrai 100. Si je redémarre mon programme et regardez préférence AI voir 50.
Sans utiliser par défaut set:
Si je change de préférence A à 100, cliquez sur appliquer, puis cliquez sur restaurer les valeurs par défaut, je verrai 50. Mais si je change de nouveau à 100, cl ick appliquer, puis redémarrer mon programme et regarder la préférence A je vois 100.
Qu'est-ce qui cause ce problème et comment puis-je le contourner?
Note: J'utilise un initialiseur de préférence, mais je souhaite changer dynamiquement la valeur par défaut à la dernière entrée utilisateur appliquée, sans le comportement bizarre mentionné ci-dessus.
Je suis en train de changer la valeur par défaut après l'initialisation dynamique – pianoisland
Vous ne pouvez pas modifier dynamiquement une valeur par défaut. Les valeurs par défaut ne sont stockées nulle part et la prochaine fois que vous le redémarrerez, elle revient à la valeur de l'initialisateur de préférence. –