如何在不继承Activity的情况下使用getSharedPreferences?

3

我有一个GamePanel类,它扩展了SurfaceView,因此我不能使用Activity来扩展SharedPreferences。我该如何在不扩展该类的情况下使用getSharedPreferences?

我已经尝试过:

SharedPreferences sp = Activity.getSharedPreferences("MyScore", Context.MODE_PRIVATE);

然而,我遇到了一个错误,错误信息显示“无法从静态上下文引用”。

创建 GamePanel 对象时传递上下文。 - ρяσѕρєя K
1个回答

2
您可以在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","");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接