Android 使用SharedReferences保存凭据

Android 使用SharedReferences保存凭据,android,android-studio,Android,Android Studio,我正在尝试使用SharedReferences保存用户凭据,我是这样做的,但它不起作用 public class MainActivity extends Activity { public EditText UserName; public EditText Password; public Button mButton; public String user_name; public String pass_word; public Check

我正在尝试使用SharedReferences保存用户凭据,我是这样做的,但它不起作用

public class MainActivity extends Activity {
    public EditText UserName;
    public EditText Password;
    public Button mButton;
    public String user_name;
    public String pass_word;
    public CheckBox mCheckSavePassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UserName = (EditText) findViewById(R.id.textUserName);
        Password = (EditText) findViewById(R.id.textPassword);
        mButton = (Button) findViewById(R.id.buttonLogin);
        mCheckSavePassword = (CheckBox) findViewById(R.id.checkSavePassword);

        mCheckSavePassword = (CheckBox) findViewById(R.id.checkSavePassword);
        SharedPreferences.Editor preferencesEditor = preferences.edit();                    
        preferencesEditor.putString("prefUserName", user_name);                 
        if(mCheckSavePassword.isChecked()) {
            preferencesEditor.putString("prefPassword", pass_word);
        }                   
        preferencesEditor.putBoolean("prefSavePassword", mCheckSavePassword.isChecked());
        preferencesEditor.apply();
    }

首次创建活动时,您正在保存空值,
user\u name
pass\u word
尚未初始化

public class MainActivity extends Activity {
    public EditText UserName;
    public EditText Password;
    public Button mButton;
    public String user_name;
    public String pass_word;
    public CheckBox mCheckSavePassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UserName = (EditText) findViewById(R.id.textUserName);
        Password = (EditText) findViewById(R.id.textPassword);
        mButton = (Button) findViewById(R.id.buttonLogin);
        mCheckSavePassword = (CheckBox) findViewById(R.id.checkSavePassword);

        mCheckSavePassword = (CheckBox) findViewById(R.id.checkSavePassword);
        SharedPreferences.Editor preferencesEditor = preferences.edit();                    
        preferencesEditor.putString("prefUserName", user_name);                 
        if(mCheckSavePassword.isChecked()) {
            preferencesEditor.putString("prefPassword", pass_word);
        }                   
        preferencesEditor.putBoolean("prefSavePassword", mCheckSavePassword.isChecked());
        preferencesEditor.apply();
    }

onCreate
是您应该阅读这些首选项的值并用这些值更新编辑文本的地方。保存应在某些用户交互的结果下完成,例如当按下按钮时。

您如何知道它不起作用?因为当我再次输入时,需要填写凭证张贴您用于读取首选项值的代码,以便我们可以看到哪些不起作用。
public class MainActivity extends Activity {
    public EditText UserName;
    public EditText Password;
    public Button mButton;
    public String user_name;
    public String pass_word;
    public CheckBox mCheckSavePassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UserName = (EditText) findViewById(R.id.textUserName);
        Password = (EditText) findViewById(R.id.textPassword);
        mButton = (Button) findViewById(R.id.buttonLogin);
        mCheckSavePassword = (CheckBox) findViewById(R.id.checkSavePassword);

        mCheckSavePassword = (CheckBox) findViewById(R.id.checkSavePassword);
        SharedPreferences.Editor preferencesEditor = preferences.edit();                    
        preferencesEditor.putString("prefUserName", user_name);                 
        if(mCheckSavePassword.isChecked()) {
            preferencesEditor.putString("prefPassword", pass_word);
        }                   
        preferencesEditor.putBoolean("prefSavePassword", mCheckSavePassword.isChecked());
        preferencesEditor.apply();
    }