Preferencias independientes para cada vista en una aplicación para Android

Tengo varias vistas que vienen y van como la aplicación se ejecuta. Quiero que cada vista tenga sus propias preferencias personales que se almacenan como la etiqueta de ID de la vista. Por encima de éstas son las "Preferencias Generales" que los subprefs hacen referencia para obtener sus valores por defecto cuando se crea una vista.

Ahora mismo lo he configurado que las Preferencias Generales son las SharedPreferences predeterminadas. Pero no tengo idea de cómo crear las nuevas preferencias y configurar una actividad de la interfaz de usuario para que el usuario puede cambiarlos. ¿Es prácticamente lo mismo que configurar SharedPreferences?

Esto puede no ser exactamente lo que usted está pidiendo, pero esto es lo que hago:

En mi actividad principal, cuando llamo a la actividad de preferencias, le paso el nombre del archivo de preferencias personalizadas como datos adicionales en la intención:

static final String EXTRA_PREFERENCES_NAME = "android.intent.extra.PREFERENCES_NAME"; ... Intent intent = new Intent(this, Preferences.class); intent.putExtra(EXTRA_PREFERENCES_NAME, preferencesName); startActivity(intent); 

Entonces, en mi actividad de las preferencias, consigo el nombre de las preferencias de encargo y lo fijo como esto:

 public class Preferences extends PreferenceActivity { private String preferencesName = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // get the custom preferences name from the extra data in the intent preferencesName = getIntent().getExtras().getString(MainActivity.EXTRA_PREFERENCES_NAME); // set the preferences file name getPreferenceManager().setSharedPreferencesName(preferencesName); // get the default preferences from XML addPreferencesFromResource(R.xml.preferences); } 

Por último, en mi actividad principal, obtengo preferencias específicas como esta:

 SharedPreferences preferences = getSharedPreferences(preferencesName, MODE_PRIVATE); String somePreference = preferences.getString("somePreference", defaultValue); 

De alguna manera no soy digno de comentar sino de escribir una respuesta, así que aquí vamos: me gustaría realmente saber cómo usar sharedPreferences con PreferencesActivity en lugar de DefaultSharedPreferences.

Una forma en la que puedo pensar para lograr esto es dejar que la preferenciaActividad guardar los valores a defaultSharedPreferences y luego leer estos valores y guardarlos en un sharedPreferences asociado con un nombre que coincida con el tipo de valores guardados.

Pero esto parece muy mal. Entonces, ¿cómo hacen ustedes esto? ¿O guarda todos sus valores de cualquier PreferencesActivities en defaultSharedPreferences?

Puede utilizar PreferenceManager para lograr el objetivo.

  • NullPointerException en SharedPreferences Android
  • Android: Mantenga el nombre de usuario en sesión hasta que se cierre la sesión
  • ¿Cómo escuchar los cambios de preferencia dentro de un archivo PreferenceFragment?
  • SharedPreferences Borrar / Guardar
  • Prueba de unidad de Android: cómo borrar SharedPreferences
  • Arquitectura de la aplicación de Android: RxJava
  • No se puede acceder a las preferencias creadas por PreferenceActivity
  • BackupManager no llama al servicio de transporte de copia de seguridad
  • ¿Por qué la variable estática de mi aplicación Android a veces se devuelve nula?
  • SharedPreferences en BroadcastReceiver parece no actualizar?
  • Activa / desactiva Toast desde las preferencias compartidas?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.