0

我在我的 asynctask 中使用 SharedPreferences 但因此以下代码行不起作用:

SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);

但是,如果我删除“这个”。它向我抛出了这个错误:

09-04 10:16:49.184: E/AndroidRuntime(1883):     at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:161)

此外,如果这使事情变得复杂,它是从服务中调用的吗?那么如何为这个 SharedPreferences 提供适当的上下文呢?

4

2 回答 2

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
    }

拥抱。

于 2013-09-04T10:52:52.687 回答
1

在扩展 Activity 的类中全局声明它

 public static SharedPreferences prefs;
   pref=PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 

现在你可以pref根据你的需要使用。

于 2013-09-04T10:49:45.007 回答