我正在使用Volley发出HTTP Post请求。
这工作正常,但是在onResponse方法中我试图设置一个SharedPreference值,但是这个值似乎没有被设置。
排球代码:
public void sendPostRequest() {
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
progress.dismiss();
try {
JSONObject obj = new JSONObject(response);
if (obj.has("success")){
SharedPreferences sharedPref = LoginActivity.this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("loggedIn", true);
editor.commit();
Intent intent = new Intent(LoginActivity.this, SearchActivity.class);
startActivity(intent);
}else{
error.setText(obj.getString("error"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
System.out.println("volley Error .................");
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("username", emailTxt.getText().toString());
params.put("password", passwordTxt.getText().toString());
return params;
}
};
queue.add(stringRequest);
}
意图被解雇所以我知道我们正在取得成功if语句。
以下代码在启动器活动中运行,如果用户已登录
,则通过登录public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
boolean loggedIn = sharedPref.getBoolean("loggedIn", false);
if (loggedIn){
Intent intent = new Intent(MainActivity.this, SearchActivity.class);
startActivity(intent);
}else{
Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
startActivity(intent);
}
}
但是,loggedIn始终为false。
答案 0 :(得分:3)
如下所示:
检索SharedPreferences对象以访问其中的首选项 私人参加此活动
LoginActivity
和MainActivity
活动都不同,因此始终false
。
在两个活动中使用getSharedPreferences
代替getPreferences
来使其发挥作用。