我有一个GamePanel类,它扩展了SurfaceView,所以我不能扩展SharedPreferences的Activity。如何在不扩展类的情况下使用getSharedPreferences?
我已经尝试过:
SharedPreferences sp = Activity.getSharedPreferences("MyScore", Context.MODE_PRIVATE);
但是,我收到一条错误消息,内容为“无法从静态上下文中引用。
最佳答案
您可以将Application类中的Sharedpreferences初始化为静态变量,然后在每个非活动类中使用它:
public class MyApplication extends Application {
private static SharedPreferences sharedPreferences;
public static SharedPreferences getSharedPreferences() {
return sharedPreferences;
}
public void setSharedPreferences(SharedPreferences sharedPreferences) {
this.sharedPreferences = sharedPreferences;
}
@Override
public void onCreate() {
super.onCreate();
setSharedPreferences(MyApplication.this
.getSharedPreferences("MyScore",getApplicationContext().MODE_PRIVATE));
现在,每当您想在静态上下文中访问sharedprefs时,都可以像下面这样使用它:
String value = MyApplication.getSharedPreferences().getString("key","");