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?
- ¿Copiar / compartir configuraciones entre versiones pagadas / gratuitas de la aplicación para Android?
- Obtener todos los nombres SharedPreferences y todas sus claves?
- Preferencia y comprobación de la casilla de verificación si está activada o desactivada
- Unidad de Google para realizar copias de seguridad y restaurar la base de datos y las preferencias compartidas de la aplicación de Android
- Serializar un SparseArray <T> con GSON
- Usar SharedPreferences en modo multiproceso
- ¿Cuánto dura un paquete?
- NullPointerException getDefaultSharedPreferences ()
- SharedPrefs se restablece después de configurar la configuración regional de la aplicación de Android
- Copia de seguridad de Android 2.2: ¿Cómo hacer copias de seguridad DefaultSharedPreferences?
- Accountmanager vs sharedpreference para la autenticación y la comunicación con el servidor
- ¿Cómo acceder a la preferencia compartida entre las actividades de android?
- Sharedpreference con la pantalla de bienvenida
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.
- ¿Cómo puedo combinar entre sucursales cuando el nombre del paquete es diferente?
- JSON VS simple manipulación de cadenas para analizar HttpRequest en Android