在 SharedPreferences 中存储值

Storing Values in SharedPreferences

我正在尝试使用 SharedPreferences 存储用户名和密码字段的值,并使用这些值填充 EditText 字段。这些字段没有被填充,我不确定我做错了什么。

这是我的 login() 方法,它在按下登录按钮时被调用。如果登录成功并选中复选框,我会在其中设置 SharedPreferences 值。

public void login() {
        mLoginProgress.setVisibility(View.VISIBLE);
        String userNameString = mEmail.getText().toString();
        String passwordString = mPassword.getText().toString();
        ParseUser.logInInBackground(userNameString, passwordString, new LogInCallback() {
            @Override
            public void done(ParseUser parseUser, ParseException e) {
                if (parseUser != null) {
                    // Login Successful
                    if (mSaveLogin.isChecked() == true) {
                        SharedPreferences preferences = getSharedPreferences("login", MODE_PRIVATE);
                        SharedPreferences.Editor editor = preferences.edit();
                        editor.putString("userName", mEmail.getText().toString());
                        editor.putString("password", mPassword.getText().toString());
                    }
                    mLoginProgress.setVisibility(View.GONE);
                    Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                    LoginActivity.this.startActivity(intent);
                }
                else {
                    // Login Failed
                    mLoginProgress.setVisibility(View.GONE);
                    String exception = e.getMessage().toString();
                    Toast.makeText(getApplicationContext(), exception, Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

在 onCreate() 中,我有这段代码用 SharedPreferences 值填充 EditText 字段。

SharedPreferences pref = getSharedPreferences("login", MODE_PRIVATE);
mEmail.setText(pref.getString("userName", ""));
mPassword.setText(pref.getString("password", ""));

您忘记拨打 editor.commit()editor.apply()