8

En mi aplicación, algunos ajustes pueden posiblemente ser cambiados mientras que el PreferenceActivity no está abierto, y un problema que estoy corriendo en addPreferencesFromResource es que se llama en onCreate, por lo que dicen, abro la PreferenceActivity, luego vaya a otra pantalla desde allí, luego haga algo que cambie la configuración, luego presione la tecla Atrás para volver al PreferenceActivity, luego ciertas configuraciones no han cambiado en el diseño.Actualizar Preferencias en PreferenceActivity en Reanudar

Entonces, ¿cómo podría volver a cargar todos los Preferences cada vez que se llama onResume (o onStart()) sin duplicar el diseño?

Respuesta

3

editar: Esta solución funcionará solo para API 11+.

No estoy seguro de entender por completo su problema, pero podría agregar una llamada para volver a crear() en el onResume de la actividad que, desde mi entendimiento, la actividad vuelva a pasar por todo el ciclo de vida.

Con el fin de asegurarse de que sólo lo hace cuando no está en los datos sucios hecho, yo establecer un indicador en las SharedPreferences que le permite a su actividad conocidos en el onResume() que necesita ser recreada.

public void onResume(){ 
      super.onResume(); 
      SharedPreferences pref = getApplicationContext().getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE); 
      if(pref.getBoolean("isDirtyPrefs", true)) 
       recreate(); 
     } 
+0

Gracias. Aún no lo he probado, pero parece que funcionará. No estaba al tanto del comando recrear() que estaba buscando en PreferenceActivity y PreferenceManager. Pero gracias, porque eso es exactamente lo que quería. – Jakar

+4

recrear es API lvl 11 – Blundell

+0

Le recomendaría que pruebe la lógica, ya que podría repetirse una y otra vez, ya que onResume se llamará en el proceso de ciclo de vida y si el desarrollador no establece la preferencia o no allí, de lo que predeterminado en true y loop. –

1

Tuve un problema similar. Al no encontrar una forma sencilla de hacer mi PreferenceActivity refrescar sí, mi solución fue añadir esto a mi PreferenceActivity:

/** 
* Called when activity leaves the foreground 
*/ 
protected void onStop() { 
    super.onStop(); 
    finish(); 
} 

Esto hará que las Preferencias de pantalla para recargar desde SharedPreferences próxima vez que se inicie. Huelga decir que este enfoque no funcionará si desea poder volver a su pantalla de preferencias utilizando el botón Atrás.

+0

Lo consideré, pero mi 'PreferenceActivity' inicia otras actividades, y hubiera sido una molestia reemplazar las' 'KeyKey'' y 'onKeyUp' en esas actividades para iniciar nuevamente' PreferenceActivity'. Gracias por la sugerencia, sin embargo. – Jakar

Cuestiones relacionadas