我有一个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","");

10-08 18:01