2011-06-05 16 views
3

我有一个活动静态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); 

} 

两种方法和我wan't使负载静态用于从相同的活性内的另一静态方法检索负荷的值的目的。但是,当我尝试使加载方法为静态时,我当然会因为非静态引用而出现错误。我该如何做这项工作?我试过Accessing SharedPreferences through static methods没有运气。

任何帮助将不胜感激!

+0

我不知道你是什么意思的“不幸”,但你链接的问题的第二个答案似乎正是你所需要的。 – 2011-06-05 06:23:58

回答

5

你可以保存和Application - 宽共享偏好,而不是首选项私人负载到Activity

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

如果你这样做,确保你也存储以同样的方式偏好(通过使用Context.getApplicationContext().getSharedPreferences

+0

在开始时,我声明了公共静态上下文上下文。然后在onCreate方法中,我将它初始化为getApplicationContext()。然后在我的加载和保存方法我使用context.getSharedPreferences等等等。但是,我的应用程序中的第一个活动引用这些方法(加载和保存)在另一个尚未开始的活动(所以创建永远不会被调用,上下文返回一个空值)。如何在不开始活动的情况下获得这些偏好? – mikez 2011-06-06 21:28:26