Android – ¿Cómo usar SharedPreferences en la clase non-Activity?

¿Cómo se usan SharedPreferences en una clase que no es de Activity? Intenté hacer una clase genérica de la utilidad de las preferencias e importar android.content.Context pero Eclipse todavía no me dejó utilizar getSharedPreferences() .

SharedPreferences están relacionadas con el contexto. Sólo se puede hacer referencia a él a través de un contexto.

Simplemente puede pasar el contexto como un parámetro a su clase. Por ejemplo en el constructor.

En su actividad:

 MyClass myClass = new MyClass(this); 

La solución que encontré a esto fue:

1-En una clase MainActivity (es decir, siempre iniciada antes de obtener cualquier contexto en el proyecto), cree una variable estática para el contexto:

public static Context contextOfApplication;

2-En un método importante de esta clase (como onCreate, el constructor, etc) inicializar 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 (también debe ser estático):

 public static Context getContextOfApplication(){ return contextOfApplication; } 

4-En la clase non-activity obtenga el contexto llamando al método creado estaticamente:

Context applicationContext = MyActivityClass.getContextOfApplication() ;

5-Utilice la clase PreferenceManager para obtener la variable SharedPreferences:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext); 

Espero eso ayude.

Intente usar las preferencias predeterminadas 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 de PATH o el tamaño de la consola). Cada actividad y servicio tiene su propio contexto también, por ejemplo, orientación de la 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 context.getApplicationContext () Es útil. Este es el mismo en toda la aplicación y siempre le dará las mismas preferencias predeterminadas.

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, cuando usar SharedPreferences:

 ctx.getSharedPreferences("com.joninazio.euskofest.UsingPreferences_preferences", Context.MODE_PRIVATE) 

Esa manera trabaja para mí por lo menos 🙂

Utilice este código a una 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(); } } 
  • Uso de las preferencias compartidas para un ahorro de alto valor
  • SharedPreferences strage. getSharedPreferences no funciona
  • ¿Puedo cambiar el nombre de archivo de Preferencias?
  • Cifrar datos en SharedPreferences
  • Guardar ArrayList en SharedPreferences
  • Cuál es la mejor manera de usar las preferencias compartidas entre las actividades
  • No se puede poner doble SharedPreferences
  • Compartido prefrence almacenado valor no funciona con android onCreate ()
  • ¿Restablecer SharedPreferences?
  • ¿Cómo puedo almacenar una Matriz de Integer en SharedPreferences en Android?
  • Cuando una aplicación se mueve forzadamente a SD-Card, ¿dónde van SharedPreferences?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.