静态SharedPreferences

mik*_*kez 3 static android sharedpreferences

我在一个活动中有两种方法

private void save(String tag, final boolean isChecked)
{
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();


    editor.putBoolean(tag, isChecked);
    editor.commit();
}

private boolean load(String tag) {
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
    return sharedPreferences.getBoolean(tag, false);

}
Run Code Online (Sandbox Code Playgroud)

并且我不想使加载静态,以便从同一活动中的另一个静态方法中检索加载值.但是,当我尝试使load方法静态时,我当然会因为非静态引用而出错.我怎样才能做到这一点?

我尝试通过静态方法访问SharedPreferences而没有运气.

任何帮助将非常感激!

loo*_*opj 5

您可以保存并加载来自Application全局共享首选项而不是prefs private Activity:

private static boolean load(String tag) {
    SharedPreferences sharedPreferences = Context.getApplicationContext().getSharedPreferences("namespace", Context.MODE_PRIVATE);
    return sharedPreferences.getBoolean(tag, false);
}
Run Code Online (Sandbox Code Playgroud)

如果这样做,请确保您也以相同的方式存储首选项(通过使用Context.getApplicationContext().getSharedPreferences)