1
我有2個活動,其中一個是用戶可以通過名爲Password的編輯文本框更新或設置新密碼,另一個活動是登錄屏幕,他們必須輸入密碼,然後使用名爲LogIn的共享首選項進行驗證。密碼活動工作正常。我可以更新或設置新密碼,但登錄活動與用戶輸入值不同。簡而言之,當他們使用密碼登錄時設置了密碼後,它說密碼不正確,而不是密碼。我發佈了兩個活動。使用SharedPreferences製作登錄屏幕需要幫助嗎?
public class Password extends Activity implements View.OnClickListener{
public static final String PASSWORD_PREF_KEY ="passwd";
private TextView messages;
private EditText pass1;
private EditText pass2;
Button button1, button2;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.mainin);
messages = (TextView) findViewById (R.id.text1);
pass1 = (EditText) findViewById(R.id.password);
pass2 = (EditText) findViewById (R.id.password_confirm);
button1 = (Button) findViewById(R.id.ok);
button2 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this);
button2.setOnClickListener(this); }
public void onClick(View v){
switch(v.getId()){
case R.id.button1:
startActivity(new Intent(Password.this,LogIn.class)); finish();
case R.id.ok:
String p1 = pass1.getText().toString();
String p2 = pass2.getText().toString();
if (p1.equals(p2)) {
if (p1.length() >=6 || p2.length() >=6) {
SharedPreferences settings = getSharedPreferences(Password.PASSWORD_PREF_KEY,0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(Password.PASSWORD_PREF_KEY,true);
editor.commit();
messages.setText("Password updated!");
}
else
messages.setText("Passwords must be at least 6 characters");
}
else{
pass1.setText("");
pass2.setText("");
messages.setText("Passwords do not match");
}
}
};
public class LogIn extends Activity {
private EditText pass1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.password);
pass1 = (EditText) findViewById(R.id.et_pw);
SharedPreferences passwd = getSharedPreferences(Password.PASSWORD_PREF_KEY,0);
final String p3 = passwd.getString(Password.PASSWORD_PREF_KEY,null);
final String p1 = pass1.getText().toString();
Button page1 = (Button) findViewById(R.id.btn_login);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (p3.equals(p1)) {
startActivity(new Intent(LogIn.this,Main.class));
}
else {
Toast.makeText(getApplicationContext(),"Incorrect Password",Toast.LENGTH_LONG).show();
}
};
});
};
}
你說的是editor.putBoolean(Password.PREF_KEY,true)是否正確?我需要改變它到什麼? – Jonathan
那麼你現在的邏輯是,當你輸入一個新的密碼時,你可以將自己的偏好放入偏好中。如果你要檢查他們是否創建了密碼,那麼這很好,但是你需要檢查密碼是否匹配。所以,而不是把editor.putString(Password.PASSWORD_PREF_KEY,P1);這很好地保存密碼爲一個字符串。 – Pengume
我將它改爲editor.putString(Password.PASSWORD_PREF_KEY,p1);像你建議,但我仍然得到不正確的密碼:/ – Jonathan