7

AppWidgetProvider クラスからの設定の読み取りに問題があるようです。私のコードはアクティビティでは機能しますが、AppWidgetProvider では機能しません。ブール値を読み戻すために使用しているコードは次のとおりです。

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

ただし、「メソッド getSharedPreferences(String, int) はタイプ ウィジェットに対して未定義です」というエラーが表示されます (widget は私の AppWidgetProvider クラスの名前です)。

提案をお寄せいただきありがとうございます!

4

2 に答える 2

13

getSharedPreferences()Contextのサブクラスでのみ使用できActivityますService。ではないAppWidgetProviderのサブクラスです。BroadcastReceiverContext

そうは言っても、PreferenceScreenシステムを使用する場合、またはそれが必要であることが確実でない場合はgetSharedPreferences()、代わりに使用PreferenceManager.getDefaultSharedPreferences()します. それらはSharedPreferences/PreferenceScreenPreferenceActivity使用するものです。

于 2010-05-01T00:08:17.937 に答える
6

onUpdate()を呼び出すことができるように、ウィジェットのメソッドでコンテキストが渡されている必要がありますcontext.getSharedPreferences()

アプリウィジェットごとの設定については、これを使用しました:

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);
}
于 2011-01-25T12:50:09.733 に答える