¿Cómo cambiar el estado de un elemento de preferencia de fuera de PreferenceActivity?

Hay algunas características en mi aplicación que requieren Android versión 4.2 +. Así que en mi actividad principal, necesitaré comprobar las características disponibles del sistema operativo y modificar (Habilitar / Desactivar) los elementos de preferencias que se definen en mi PreferenceActivity .

El siguiente código es inaccesible desde fuera de PreferenceActivity

 ListPreference prefReport = (ListPreference)getPreferenceScreen().findPreference("pref_report"); prefDspProfile.setValue("0"); 

Así que mi pregunta es cómo modificar los elementos de preferencias de fuera de PreferenceActivity.

Si utiliza una PreferenceAcitivity implícitamente está utilizando un archivo SharedPreference. Por lo tanto, fuera de su PreferenceAcitivity puede acceder a su archivo SharedPrefence y cambiarlo. Pronto, esos cambios se reflejarán en su PreferenceActivity.

Necesita un Contexto para acceder a una SharedPreference. Mirar hacia adelante por ejemplo en el método onCreate de otra simpleAcitivity.

ACTUALIZACIÓN: Utilizando este enfoque, no podrá activar / desactivar elementos. Puede cambiar sus valores o eliminarlos

 @Override protected void onCreate(Bundle state){ super.onCreate(state); // Restore preferences SharedPreferences settings = getPreferences(MODE); // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { //change your setting here // We need an Editor object to make preference changes. // All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Commit the edits! editor.commit(); } } 

Otra forma, y ​​en mi opinión mejor y más fácil es proporcionar recursos alternativos . Puede proporcionar muchos archivos xml, que definen la configuración de la aplicación según el nivel de la API de Android, utilizando un calificador de recursos . Por ejemplo: v2, v17.

  res-v4 setting.xml res-v17 setting.xml -> This file can include specific Jelly Beans configs 
  • Configuración de Android Widget con SharedPreferences
  • Ejecutar un pedazo de código sólo una vez cuando se instala una aplicación
  • Cambio de idioma dentro de la aplicación Android
  • Qué es diferente entre OnPreferenceChangeListener y OnSharedPreferenceChangeListener
  • Utilizar commit () dentro de OnSharedPreferenceChangeListener ()
  • ¿Los elementos de preferencia se reajustan automáticamente?
  • ¿Qué es una buena manera de almacenar un objeto de ubicación?
  • Android SharedPreferences putStringSet ordenar / ordenar
  • Android: Recuperar int guardado en PreferenceManager getDefaultSharedPreferencias en otra actividad
  • ¿Cuál es el punto de SharedPreferences.getFloat ()
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.