6

Cada vez que intento agregar esta línea, se bloquea mi aplicación. ¿No lo estoy poniendo en el lugar correcto?Android registerOnSharedPreferenceChangeListener() provoca un bloqueo en una vista personalizada

preferences.registerOnSharedPreferenceChangeListener(myActivity.this); 

Aquí es mi clase

class Simulation extends View { 

    // I declare my program variables here 
    public Simulation(Context context) { 
     super(context); 
     // get the preferences 
     SharedPreferences preferences = PreferenceManager 
       .getDefaultSharedPreferences(context); 
     preferences 
       .registerOnSharedPreferenceChangeListener(myActivity.this); 
     String storedPreference = preferences.getString("nPref", "0"); 
    } 

    public void onSharedPreferenceChanged(
      SharedPreferences sharedPreferences, String key) { 
     Log.i(TAG, "preferences changed!"); 
    } 
} 

Gracias!

Respuesta

13

hacer como esto

SharedPreferences.OnSharedPreferenceChangeListener prefListener = 
     new SharedPreferences.OnSharedPreferenceChangeListener() { 
    public void onSharedPreferenceChanged(SharedPreferences prefs, 
      String key) { 
     if (key.equals("date")) { 
     } 
    } 
}; 

y

preferences.registerOnSharedPreferenceChangeListener(prefListener); 
+0

Gracias funcionó muy bien! – unknownone

+0

De nada – Rasel

+0

Excelente y elegante. No sabía que esto existía. Funciona perfectamente. +1 y gracias. – Shawn

Cuestiones relacionadas