Android 使用SharedReferences保存凭据
我正在尝试使用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
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();
}