(Android)在非活动类中使用SharedPreferences写入/读取时出错

时间:2012-10-17 03:01:05

标签: java android oop sharedpreferences

您好,感谢您的阅读。

我正在尝试使用OOP方法来使用SharedPreferences来保存和检索我正在处理的Android应用程序中的数据。我相信以下代码是正确的,因为它直接在非OOP庄园中使用时可以在java类中使用。但是,在我创建的这个SharedPref类中,我在MODE_PRIVATE中在Eclipse中遇到错误,我无法弄清楚原因。感谢。

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)进行静态引用”

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

使用Context.MODE_PRIVATE。它不是一个Activity,所以你必须从Context中检索它。