Philosopheur Posté(e) 18 août 2012 Share Posté(e) 18 août 2012 Je modifie par programme la saisie de l’utilisateur lorsqu'il saisi une valeur "Préférence" non conforme. Lorsque je sors (retour Activity Main) de l’écran des "Préférences" et que je rentre à nouveau, je peux constater que la modification faite par mon programme a bien été enregistrée. Par contre si je ne sors pas et que je souhaite modifier à nouveau la valeur, je ne retrouve pas la modification faite par le programme(alors qu'elle a bien été faite et contrôlé avec LogCat). => problème d'actualisation de l'affichage des "Préférences"!!! public class MyPreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { private int durée; if( key.equals("MaxVal")){ try{ durée=Integer.parseInt(prefs.getString(key,"")); // si l'utilisateur saisie une valeur >100, le programme force la valeur à 100 if (durée>100){ durée=100; } // si l'utilisateur saisie une valeur qui n'est pas un nombre le programme force la valeur à 0 }catch(NumberFormatException e){ durée=0; } // Correction de la valeur key "MaxVal" prefs.edit().putString(key,Integer.toString(durée)); prefs.edit().commit()); } @Override public void onBackPressed() { setResult(RESULT_OK); super.onBackPressed(); //finish(); } } Pouvez vous vous m'aider SVP (je suis à cours d'idées) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Philosopheur Posté(e) 21 août 2012 Auteur Share Posté(e) 21 août 2012 J'ai fini par trouver le Pb qui venait de ce que je mettais à jour les données partagées mais pas les vues de l'écran de préférence. Ci dessous la solution : public class MyPreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { //private static final String TAG = "MyPreference"; private int durée; private EditTextPreference mDurée; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); // Get a reference to the preferences mDurée = (EditTextPreference)getPreferenceScreen().findPreference("PeriodeDiaporama"); } @Override public void onBackPressed() { setResult(RESULT_OK); super.onBackPressed(); //finish(); } @Override protected void onresume() { super.onresume(); // initialisation de l'écran des préférences mDurée.setSummary("Période : "+ mDurée.getText() + "s"); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onpause() { super.onpause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { boolean erreur=false; if( key.equals("PeriodeDiaporama")){ try{ durée=Integer.parseInt(prefs.getString(key,"")); if (durée<1){ durée=3; erreur=true; } if (durée>60){ durée=60; erreur=true; } }catch(NumberFormatException e){ durée=3; erreur=true; } if(erreur){ Toast.makeText(this, "Valeur Incorrecte : saisir entre 1 et 60 (secondes)", Toast.LENGTH_SHORT).show(); } // Modification des vues de l'écran des préférences mDurée.setText(Integer.toString(durée)); mDurée.setSummary("Période : "+ mDurée.getText() + "s"); } } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.