Philosopheur Posted August 18, 2012 Share Posted August 18, 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) Link to comment Share on other sites More sharing options...
Philosopheur Posted August 21, 2012 Author Share Posted August 21, 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"); } } } Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.