从AsyncTask、java.lang.NullPointerException中的SharedReferences获取字符串

从AsyncTask、java.lang.NullPointerException中的SharedReferences获取字符串,java,android-studio,sharedpreferences,Java,Android Studio,Sharedpreferences,我试图在AsyncTask中获取保存在SharedReferences中的字符串,但不幸的是,我遇到以下错误: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.content.SharedReferences android.content.Context.GetSharedReferences(java.lang.String,int)” 以下是相关代码: public class FetchData extends AsyncTas

我试图在AsyncTask中获取保存在SharedReferences中的字符串,但不幸的是,我遇到以下错误:

java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.content.SharedReferences android.content.Context.GetSharedReferences(java.lang.String,int)”

以下是相关代码:

public class FetchData extends AsyncTask<Void, Void, String> {

    private Context context;
    String deviceId;

    private AsyncInterface asyncInterface;

    public FetchData(AsyncInterface asyncInterface) {
        this.context = context;
        this.asyncInterface = asyncInterface;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        SharedPreferences sharedPreferences = context.getSharedPreferences("deviceId", MODE_PRIVATE); //Error here
        deviceId = sharedPreferences.getString("deviceId", deviceId);

    }
}
公共类FetchData扩展异步任务{
私人语境;
字符串设备ID;
专用异步接口;
公共获取数据(异步接口异步接口){
this.context=上下文;
this.asyncInterface=asyncInterface;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
SharedReferences SharedReferences=context.getSharedReferences(“deviceId”,MODE_PRIVATE);//此处出错
deviceId=SharedReferences.getString(“deviceId”,deviceId);
}
}

我做错了什么?

也许你应该添加一个构造函数参数
上下文

非常感谢。这解决了我的问题!