Aller au contenu

Modification/Actualisation valeurs de PreferenceActivity


Philosopheur

Recommended Posts

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...