SharedPreferences strage. getSharedPreferences no funciona

Por favor, ayúdame. No sé lo que está mal con este código:

import android.appwidget.AppWidgetProvider; import android.content.SharedPreferences; public class WeatherWidget extends AppWidgetProvider { static SharedPreferences settings = getSharedPreferences("weather_prefs", 0); public void onUpdate() { settings.getString("location", "N/A"); } } 

En la línea "static SharedPreferences …" aparece un error:

El método getSharedPreferences (String, int) no está definido para el tipo WeatherWidget

¿Por qué su método indefinido si su método de clase?

El método getSharedPreferences no está disponible para un AppWidgetProvider porque no es un Context. Este enlace explica un poco más: Obtener preferencias en AppWidget Provider

Necesita un objeto Context para obtener una referencia de preferencia compartida:

 // add to WeatherWidget: @Override public void onEnabled(Context ctx) { settings = ctx.getSharedPreferences("weather_prefs", 0); } 

Enviar el contexto como un parámetro de la clase de actividad a la clase que no es de actividad

En tu clase de actividad:

 function_name( getApplicationContext() ); // calling (or simply) function_name( this ); // calling 

En su clase Non Activity: (donde no existe ningún contexto)

 public void fun_name(Context ctx) { settings = ctx.getSharedPreferences("pref", 0); } 

He utilizado este código para obtener las preferencias compartidas objeto en AppWidgetProvider:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if (prefs == null) throw new NullPointerException("prefs"); prefs.getInt(....); 
  • La aplicación sigue olvidando las preferencias compartidas al reiniciar
  • Android Preferences error, "String no se puede convertir en int"
  • Cómo guardar los datos de arrayList en SharedPreferences?
  • Java.lang.IllegalStateException: Orca SharedPreferences utilizado antes de inicializado
  • Ajuste del sonido para la notificación
  • ¿Dónde se almacenan las preferencias compartidas?
  • Escritura de clase Singleton para administrar las compartidas SharedPreferences de Android
  • Android - ¿Es mala práctica tener múltiples preferencias compartidas?
  • Android SharedPreferences, cómo guardar una variable int simple
  • No se puede poner doble SharedPreferences
  • Android: las preferencias compartidas se pierden a veces
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.