У меня есть класс asyctask и класс sharedpreferences.
в AsyncTask> onpostexecute после успешного входа в систему я хочу установить значения для сеанса с использованием sharedpreferences, для этого мне нужно передать контекст в класс sharedpreferences, но в onpostexecute()
он говорит, что контекст не может быть применен.
сеанс
public class Session{
SharedPreferences prefs;
Context c;
private String emailid = "";
public String getEmailid() {
emailid=prefs.getString("emailid","");
return emailid;
}
public void setEmailid(String emailid) {
this.emailid = emailid;
prefs.edit().putString("emailid",emailid).commit();
}
public void Session(Context c){
this.c = c;
prefs = c.getSharedPreferences("session_data",Context.MODE_PRIVATE);
}
}
AsyncTask
@Override
protected void onPostExecute(String result) {
String data = result;
String success_code = "";
try {
JSONObject jObj = new JSONObject(data);
success_code = jObj.getString("resp_code");
Toast.makeText(c,data,Toast.LENGTH_LONG).show();
if(success_code.equals("1")){
Toast.makeText(c,"Welcome " + jObj.getString("fullname"),Toast.LENGTH_LONG).show();
Session obj = new Session();
obj.setEmailid(jObj.getString("emailid"));
}else{
Toast.makeText(c,"Invalid Credentials !",Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
просто посмотрите на Session obj = new Session (); Это должно быть похоже на Session obj = new Session (c); , но здесь написано, что его нельзя применить, c это контекст, в котором я перехожу от основного к асинктической задаче.