设置共享首选项Volley StringRequest

时间:2016-06-02 09:21:39

标签: android android-volley android-sharedpreferences

我正在使用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。

1 个答案:

答案 0 :(得分:3)

如下所示:

getPreferences

  

检索SharedPreferences对象以访问其中的首选项   私人参加此活动

LoginActivityMainActivity活动都不同,因此始终false

在两个活动中使用getSharedPreferences代替getPreferences来使其发挥作用。