您好,感谢您的阅读。
我正在尝试使用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)进行静态引用”
答案 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中检索它。