¿Cómo se usan las Preferencias Compartidas en una clase que no es de Actividad? Intenté hacer una clase de utilidad de Preferencias genéricas e importar android.content.Context
pero Eclipse todavía no me dejaba usar getSharedPreferences()
.Android - ¿Cómo usar las SharedPreferences en la clase no activa?
Respuesta
SharedPreferences están relacionadas con el contexto. Solo puede hacer referencia a él a través de un contexto.
Simplemente puede pasar el contexto como parámetro a su clase. Por ejemplo, en el constructor.
En su actividad de hacer:
MyClass myClass = new MyClass(this);
Intente con default preferences con un contexto de aplicación. Un contexto es similar al entorno en el que se ejecuta una aplicación en Linux o Windows (por ejemplo, variables de entorno como el estilo de ventana PATH o el tamaño de la consola). Cada actividad y servicio tiene su propio contexto, por ejemplo, orientación de pantalla, tema y etiqueta, etc. pero para su aplicación no desea el contexto de la actividad, desea algo global para la aplicación, aquí es donde es útil context.getApplicationContext() . Esto es igual en toda la aplicación y siempre le dará las mismas preferencias predeterminadas.
puedes contar? Intenté 'SharedPreferences prefs = getDefaultSharedPreferences (this);' pero no funciona. –
He ampliado mi respuesta. –
Use 'PreferenceManager.getDefaultSharedPreferences (applicationContext);' no importa dónde se encuentre en el código, requiere un contexto para usar las Preferencias. –
La solución que encontré a esto fue:
1-En una clase MainActivity (es decir, siempre se puso en marcha antes de recibir cualquier contexto en el proyecto) crear una variable estática para el contexto:
public static Context contextOfApplication;
2-en un método Importante de esta clase (Tales como onCreate, el constructor, etc) Initi alize esta variable utilizando el método getApplicationContext:
public void onCreate() {
contextOfApplication = getApplicationContext();
}
3-En la misma clase crear un método "getter" para esta variable (que también debe ser estática):
public static Context getContextOfApplication(){
return contextOfApplication;
}
4-en la no -activity class obtener el contexto llamando al método creado estáticamente:
Context applicationContext = MyActivityClass.getContextOfApplication()
;
5-Uso de la Clase PreferenceManager para obtener la variable SharedPreferences:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
espero que ayude.
Esa es una solución útil, sugeriría utilizar contextOfApplication como un campo privado – FredMaggiowski
También puede usar applicationContext.getSharedPreferences (pref_name, MODE_PRIVATE); –
Primero, declare un atributo privado en su clase. En mi caso, tengo una clase BaseAdapter:
private final Context ctx;
private final Vector<Acto> actos;
public ActoAdaptador(Context ctx, Vector<Acto> as) {
super();
this.ctx = ctx;
this.actos = as;
}
Entonces, cuándo usar los SharedPreferences:
ctx.getSharedPreferences("com.joninazio.euskofest.UsingPreferences_preferences", Context.MODE_PRIVATE)
De esta manera funciona para mí al menos :)
uso de este código a un Nueva clase.
import android.content.Context;
import android.content.SharedPreferences;
/**
* Created by Atiar Talukdar on 6/5/2017.
*/
public class TemporaryStorageSharedPreference {
protected final static int DEFAULT = 0;
int temp = 0;
public int readSharedPreference(Context context, String spName,String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(spName, Context.MODE_PRIVATE);
return temp = sharedPreferences.getInt(key,DEFAULT);
}
public void writeSharedPreference(Context context,String ammount,String spName,String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(spName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(key, DEFAULT);
editor.commit();
}
}
crear SharedPreferences clase
/**
* @param mContext
* @param key
* @param value
*/
public static void savePreferences(Context mContext, String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value).apply();
}
/**
* @param context
* @param keyValue
* @return
*/
public static String getPreferences(Context context, String keyValue) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
return sharedPreferences.getString(keyValue, "");
}
/**
* @param mContext
*/
public static void removeAllSharedPreferences(Context mContext) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear().apply();
}
- 1. ¿Cómo puedo usar getSystemService en una clase no activa (LocationManager)?
- 2. ¿Cómo usar getSystemService en una clase no activa?
- 3. ¿Cómo puedo usar WifiManager en una clase no activa?
- 4. ¿Qué es SharedPreferences en Android?
- 5. NullPointerException en SharedPreferences Android
- 6. android sharedpreferences establecer valor
- 7. Android SharedPreferences Copia de seguridad no funciona
- 8. Android SharedPreferences en Fragment
- 9. Limitaciones de Android SharedPreferences?
- 10. Tamaño máximo de la clase SharedPreferences
- 11. Android: ¿Ver archivo SharedPreferences?
- 12. Android: Copiar/Duplicar SharedPreferences
- 13. android - sharedpreferences return value nulo
- 14. Android: uso de SharedPreferences en una biblioteca
- 15. ¿Cómo usar SharedPreferences como LocalStore, de una manera más genérica?
- 16. android cómo puedo usar la clase ObjectAnimator para android 2.2
- 17. SharedPreferences no se actualiza
- 18. ¿Cómo uso las SharedPreferences fuera de una actividad?
- 19. Cómo usar las Preferencias Compartidas
- 20. android-maven-plugin: método de implementación que no elimina SharedPreferences
- 21. cifrar datos en SharedPreferences
- 22. Android expandiblelistview no se activa enChildClick
- 23. Android - SharedPreferences con el objeto serializable
- 24. ¿Cómo usar SharedPreferences para guardar un URI o cualquier almacenamiento?
- 25. Base de datos de acceso en clase no activa
- 26. Cómo guardar y recuperar la fecha en SharedPreferences
- 27. ¿Cómo elimino SharedPreferences desde fuera de una aplicación de Android?
- 28. Cómo simular: pseudo clase css activa en android en elementos sin enlace?
- 29. Android: ¿Cómo usar la clase de administrador de descargas?
- 30. Android: ¿Cómo reiniciar FirstRun SharedPreferences cuando mi aplicación se actualiza?
¡Ajá! Eso era exactamente lo que estaba buscando. Gracias por la respuesta simple y clara. Ahora puedo acceder usando 'context.getSharedPreferences();'. –
error fue MODE_PRIVATE no se puede resolver con una variable – Prasad
Mi actividad no permite un 'this' en mi otro constructor de clase (la clase con' SharedPreferences'). – Azurespot