2010-09-23 6 views
0

je le code suivant dans mon application dans res/xml/preferences.xml:Android comment obtenir une préférence spécifique?


<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory android:title="Wi-Fi settings"> 


    <EditTextPreference 
      android:key="pref_voice_threshold_top" 
      android:title="@string/title_pref_voicetopthreshold" 
      android:dialogTitle="@string/dialog_title_pref_voicetopthreshold" 
      android:defaultValue="20" 
      android:inputType="number"/> 

</PreferenceCategory> 

</PreferenceScreen> 

Et je me demandais est-il possible pour moi d'utiliser ensuite cette préférence dans le code, donc je peut le mettre à jour en téléchargeant un fichier XML?

Donc, j'affiche actuellement la préférence ci-dessus dans un PreferenceActivity, qui fonctionne bien, mais je veux être en mesure de mettre à jour le réglage en téléchargeant un nouveau paramètre chaque semaine à partir d'Internet. Donc, ma question est comment puis-je ouvrir cette préférence dans le code et définir sa valeur à la nouvelle valeur téléchargée?

Répondre

4

Comme dit McStretch, vous devez obtenir la préférence avec

sharedPreferences = getSharedPreferences("com.yourname.yourapp_preference", 0); 
Editor editor = sharedPreferences.edit(); 

editor.putString("your_optionname", "newValue"); 
// Save 
editor.commit(); 

Le com.yourname.yourapp_preference est le nom du fichier xml. Il est généralement situé dans /data/data/com.yourname.yourapp/shared_prefs/com.yourname.yourapp_preference.xml

Vérifiez ce répertoire pour voir comment votre fichier est nommé, mais il devrait être par défaut packagename_perference .xml

2

Jetez un oeil à ce poste afin de saisir un objet préférence Editor: How do I set a preference in code?

Avant de vous le Editor:

parser le XML pour obtenir vos valeurs de préférence souhaitées, puis utilisez le Editor à récupérer la préférence correcte et ensuite la définir.

+0

Merci mais que dois-je utiliser comme chaîne dans getSharedPreferences? J'ai essayé getSharedPreferences ("pref_voice_threshold_top", 0) et getSharedPreferences ("paramètres Wi-Fi", 0) mais les deux retournent null. –

+0

Puisque vous utilisez une PreferenceActivity, vous pouvez utiliser cette méthode: public Préférence findPreference (clé CharSequence) trouvée dans PreferenceActivity. – McStretch

+0

Désolé je n'étais pas clair sur cette partie, je dois être en mesure de définir la préférence de l'extérieur de la PreferenceActivity, donc dans ce cas, je n'utilise pas un PreferenceActivity où je veux définir la préférence –

Questions connexes