2010-04-30 17 views
7

'da tercihler edinin AppWidgetProvider sınıfımdaki tercihleri ​​okumada sorun yaşıyorum. Kodum bir Etkinlikte çalışır, ancak bir AppWidgetProvider'da yoktur. Burada bir boolean geri okumak için kullanıyorum kodudur: AncakAppWidget Sağlayıcısı

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
boolean autoreplyon = settings.getBoolean("autoreplyon", false); 

, ben Widget benim AppWidgetProvider adıdır (hata "yöntemi getSharedPreferences (String, int) tipi Widget için tanımlanmamış" olsun sınıf).

Öneriniz için şimdiden teşekkür ederiz!

cevap

12

getSharedPreferences(), kullanmayı tercih ediyorsanız, Activity veya Service gibi alt sınıflarda kullanılabilir. AppWidgetProvider, Context olmayan bir BroadcastReceiver alt sınıftır. Eğer PreferenceScreen sistemini kullanacağız eğer

, söyleniyor, yoksa bu kadar emin değilseniz lazım lazım lazım yerine PreferenceManager.getDefaultSharedPreferences() kullanmak istiyorsunuz, getSharedPreferences() ol. Bunlar, PreferenceScreen/ PreferenceActivity'un kullanacağı SharedPreferences.

+0

, teşekkürler! –

6

onUpdate() yönteminde bir bağlamdan geçmiş olmalısınız, böylece context.getSharedPreferences() numaralı telefonu arayabilirsiniz.

başına appwidget tercihleri ​​için

, ben bu kullandık:

çalıştı
public static String getSharedPreferencesNameForAppWidget(Context context, int appWidgetId) { 
    return context.getPackageName() + "_preferences_" + appWidgetId; 
} 

public static SharedPreferences getSharedPreferencesForAppWidget(Context context, int appWidgetId) { 
    return context.getSharedPreferences(
     getSharedPreferencesNameForAppWidget(context, appWidgetId), 0); 
} 
İlgili konular