SharedPreferences需要上下文

时间:2013-09-04 10:41:54

标签: android sharedpreferences android-context

我在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提供适当的上下文?

2 个答案:

答案 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