Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modification/Actualisation de PreferenceActivity

Actualiser l'affichage Propriétés

Sujet résolu
    17 août 2012 à 21:53:03

    Je modifie par programme la saisie de l’utilisateur lorsqu'il saisi une valeur "Préférence" non conforme.
    Lorsque je sors de l’écran des "Préférences" et que je rentre à nouveau, je peux constater que ma modification 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)
    • Partager sur Facebook
    • Partager sur Twitter
      21 août 2012 à 10:15:20

      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");
      		}
      	}
      
      }
      
      • Partager sur Facebook
      • Partager sur Twitter

      Modification/Actualisation de PreferenceActivity

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown