わかってるわかってる、炎上して地獄の燃えさしに放り込まれてしまう……。
設定をラップするシングルトン クラスを使用しSharedPreference
ます。次のようなものです。
public class PrefSingleton{
private static PrefSingleton mInstance;
private Context mContext;
//
private SharedPreferences mMyPreferences;
private PrefSingleton(){ }
public static PrefSingleton getInstance(){
if (mInstance == null) mInstance = new PrefSingleton();
return mInstance;
}
public void Initialize(Context ctxt){
mContext = ctxt;
//
mMyPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
}
}
そして、例が質問で表しているものの周りにラッパー関数を作成します。たとえば、
PrefSingleton.getInstance().writePreference("exampleSetting", "off");
実装は次のようになります。
// Within Singleton class
public void writePreference(String key, String value){
Editor e = mMyPreference.edit();
e.putString(key, value);
e.commit();
}
最初のアクティビティから、シングルトン クラスを次のようにアクティブ化します。
PrefSingleton.getInstance().Initialize(getApplicationContext());
私が反対票を投じるリスクがある理由は、グローバルな静的クラスを使用することは悪い考えである可能性があり、プログラミングの基礎の実践に反するからです。しかし、細かいことはさておきPrefSingleton
、コードがどのようなアクティビティにあるかに関係なく、クラスの唯一のオブジェクトのみが存在し、アクセスできることを保証します。