はい、公開静的にすることができます:
public static void setSharedPrefs(Context context, String key, String value) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value).commit();
}
アクティビティが終了した後もコンテキストを保持する可能性がある状況には注意してください。これは悪いことです。
あなたが説明するより可能性の高いシナリオは、次のようなクラスを作成することです。
public class MyPrefs {
SharedPreferences settings;
SharedPreferences.Editor editor;
public MyPrefs(Context context){
settings = PreferenceManager.getDefaultSharedPreferences(context);
editor = settings.edit();
}
public void saveName(String name){
editor.putString("name", name).commit();
}
}
Application を拡張するクラスでこのクラスを遅延初期化し、そこに取得するためのゲッターを次のように使用します。
MyPrefs prefs = ((MyAppication) getContext().getApplicationContext()).getMyPrefs();
次のように使用します。
prefs.saveName("blundell");
編集
遅延初期化の例:
private MyPrefs prefs;
public MyPrefs getMyPrefs(){
if(prefs == null){
prefs = new MyPrefs(this);
}
return prefs;
}
注: これは拡張するクラス内の遅延初期化であるApplication
ためthis
、アプリケーション コンテキストを参照し、アプリケーションの存続期間中存続します。アクティビティ コンテキストを使用している場合は、遅延初期化を使用したくないでしょう。(アプリケーションコンテキストを使用してください! )