0

您好,感谢您的阅读。

我正在尝试采用 OOP 方法来使用 SharedPreferences 在我正在开发的 android 应用程序中保存和检索数据。我相信下面的代码是正确的,因为当它直接用于非 OOP 庄园时,它可以在 java 类中工作。但是,在我创建的这个 SharedPref 类中,我在 Eclipse 中的 MODE_PRIVATE 出现错误,我不知道为什么。谢谢。

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class SharedPref {

    public static String File = "DPFile";

    public static void saveToSP(String key, String value) {
        SharedPreferences saveData = getSharedPreferences(File, MODE_PRIVATE);
        SharedPreferences.Editor editor = saveData.edit();
        editor.putString(key, value);
        editor.commit();
    }


    public static String getSavedData(String key) {
         SharedPreferences preferences = getSharedPreferences(File, MODE_PRIVATE);
         return preferences.getString(key, null);
    }
}

此外,如果我扩展 Activity 类 getSharedPreferences 成为错误行和以下消息:

“无法从 ContextWrapper 类型对非静态方法 getSharedPreferences(String, int) 进行静态引用”

4

2 回答 2

4

解决此问题的最简单方法可能是将 Context 传递给您的两个方法,并使其看起来像这样:

public static void saveToSP(Context context, String key, String value) {
    SharedPreferences saveData = context.getSharedPreferences(File, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = saveData.edit();
    editor.putString(key, value);
    editor.commit();
}
于 2012-10-17T03:06:10.537 回答
0

使用 Context.MODE_PRIVATE。它不是一个活动,所以你必须从上下文中检索它。

于 2012-10-17T03:07:14.297 回答