2011-05-26 4 views
3

J'essaie d'obtenir et de définir une valeur listPreference à partir de différentes activités et cela ne fonctionne pas. Quand je le lis et écris à partir de mon activité principale, il ne garde que ce que j'écris, donc je suppose que je ne cible pas la listPreference correctement quand je suis en dehors de l'activité parce que ça fonctionne dans ma préférence activité pas de problème. J'ai vu quelques références sur le site Web du développeur à CharSequence avec getValue et getEntryValues ​​mais je n'ai pas eu de chance de les faire fonctionner correctement non plus.get et set listPreference d'une autre activité ne fonctionne pas

Voici mon code pour cliquer sur un bouton et le réglage de la valeur listpreference il lance l'intention de changer d'activités:

Activité principale, en essayant de définir la valeur de la listpreference à la première valeur de l'indice;

 SharedPreferences settings = getSharedPreferences("PreferenceXML", 
       MODE_PRIVATE); 
      SharedPreferences.Editor editor = settings.edit(); 

      editor.putString("ListPreferenceInXML", "1"); 
      editor.commit(); 

      String levelCheck = settings.getString("ListPreferenceInXML","1"); 

Dans ma prochaine activité que j'appelle lire la valeur sur le lancement pour voir ce qui listPreference est actif et il est toujours le numéro que je vous écris de l'activité du secteur énumérés ci-dessus. Le problème est quand je vais à l'activité Préférence réelle et il ne correspond pas ou mise à jour quand je le change sur le ListPreference et lance la même activité de là (il lit toujours la valeur que j'ai définie du bouton Activité principale)

le code comme suit pour l'activité en essayant de lire ListPreference:

SharedPreferences settings = getSharedPreferences("PreferenceXML", 
       MODE_PRIVATE); 

    Toast.makeText(this, settings.getString("ListPreferenceInXML","1"), 1000).show(); 

Répondre

2

Je fini par comprendre, le problème avec la façon dont j'appelle les préférences. Au lieu d'appeler les préférences comme ça, dans les deux cas;

SharedPreferences settings = getSharedPreferences("PreferenceXML", 
      MODE_PRIVATE); 

les appeler comme ceci:

SharedPreferences settings = 
     PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 

Je ne sais pas s'il y a une étape manquante de la première façon d'appeler les préférences mais cette 2ème façon de travailler comme un champion.