forum frandroid - android et tablette

Aller au contenu

  • Connectez-vous avec Facebook Connectez-vous avec Twitter Connexion avec Google Connexion
  • Créer un compte
Change

Modification/Actualisation valeurs de PreferenceActivity


  • Merci de vous connecter pour répondre
1 réponse à ce sujet

#1
Philosopheur

Philosopheur

    Membre avancé

  • Membre
  • 40 messages
  • Marque:ONDA
  • Modèle:Vi40 v3 Elite 16Go CM10 4.1.2 + SGS2
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)

Modifié par Philosopheur, 18 August 2012 - 18:10.

Vi40-v3 + SGS2

#2
Philosopheur

Philosopheur

    Membre avancé

  • Membre
  • 40 messages
  • Marque:ONDA
  • Modèle:Vi40 v3 Elite 16Go CM10 4.1.2 + SGS2
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");
	 }
}
}

Vi40-v3 + SGS2




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)

Skimlinks