首页 > 解决方案 > 关闭登录菜单后如何在 SharedPreferences 中保存数据?

问题描述

我正在尝试将我的数据保存在从 JSON 获取数据的位置,并且我想将其保存以用于登录活动。在登录活动中,我希望它检查数据是否存在,因此不再需要登录。所以我SharedPreferences用来保存数据,但我不知道它是否保存,因为如果应用程序终止,我无法跟踪它。但在我把一些数据放在它上面之前,它突然就开始了。

这是我从 JSON 获取数据并将其保存到sharedpreferences.

String jsonData = response.body().string();
            JSONObject object = new JSONObject(jsonData);
            token = object.getString("access_token");
            Log.d("isi token", "" + token);
            if (response.code() == 200) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        new userData().execute();
                        SharedPreferences sharedPreferences = getSharedPreferences("userToken", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putString("token", token);
                        editor.commit();
                        Intent intent = new Intent(LoginActivity.this, JudulActivity.class);
                        startActivity(intent);
                    }
                });
            }

这是我的数据,我从中检索数据sharedpreferences并希望在令牌为空时使逻辑登录,因此它不会有意。但在我调用 JSON 之前它是有意的。

Log.d("token", "" + token2);
    SharedPreferences sharedPreferences = getSharedPreferences("userToken", Context.MODE_PRIVATE);
    token2 = sharedPreferences.getString("token", "");
    Log.d("token2", "" + token2);
    if (token2 == null) {
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                nameS = username.getText().toString();
                passS = password.getText().toString();

                if (nameS.isEmpty()) username.setError("Username belum diisi");
                else if (passS.isEmpty()) password.setError("Password belum diisi");
                else {
                    new login().execute();
                }
            }

        });
    } else {
        Intent intent = new Intent(LoginActivity.this, JudulActivity.class);
        startActivity(intent);
    }

令牌中的 Log.d 为空,但在 token2 中什么也没有发生,请帮助如何使其正确。

标签: androidsharedpreferences

解决方案


token2 = sharedPreferences.getString("token", "");

它将获得默认值"",因此它不为空,因为您必须尝试此操作

if(TextUtils.isEmpty(token2)){
    // your code
}

推荐阅读