str*_*ark 7 android preferences android-widget android-preferences
我似乎无法从AppWidgetProvider类中读取首选项.我的代码在Activity中工作,但它不在AppWidgetProvider中.这是我用来回读布尔值的代码:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean autoreplyon = settings.getBoolean("autoreplyon", false);
Run Code Online (Sandbox Code Playgroud)
但是,我得到"方法getSharedPreferences(String,int)未定义类型小部件"错误(小部件是我的AppWidgetProvider类的名称).
在此先感谢您的任何建议!
Com*_*are 13
getSharedPreferences(),如果您选择使用它,仅适用于或Context类似的子类.是一个子类,不是一个.ActivityServiceAppWidgetProviderBroadcastReceiverContext
话虽这么说,如果你打算使用这个PreferenceScreen系统,或者如果你不确定它必须得到它getSharedPreferences(),我会PreferenceManager.getDefaultSharedPreferences()改用它.这些都是SharedPreferences那PreferenceScreen/ PreferenceActivity将使用.
您应该已经在窗口小部件的onUpdate()方法中传递了一个上下文,以便您可以调用context.getSharedPreferences().
对于per-appwidget首选项,我使用过:
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9016 次 |
| 最近记录: |