我在asynctask中使用SharedPreferences但是由于这个原因,以下代码行不起作用:
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
但如果我删除'this'。它抛出了这个错误:
09-04 10:16:49.184: E/AndroidRuntime(1883): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:161)
此外,如果这使事情变得复杂,它将从服务中调用?那么我该如何为这个SharedPreferences提供适当的上下文?
答案 0 :(得分:2)
您可以在AsyncTask构造函数中设置一个参数,它将是基本上下文,如下所示:
public class X extends AsyncTask {
private Context context;
public X(Context context) {
this.context = context;
}
@Override
doInBackground() {
SharedPreferences prefs = context.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
// your code
}
拥抱。
答案 1 :(得分:1)
在扩展Activity
的类中全局声明它 public static SharedPreferences prefs;
pref=PreferenceManager.getDefaultSharedPreferences(getBaseContext());
现在,您可以根据需要使用pref
。