2011-06-17 52 views
1

我正在使用該代碼記住我的用戶名和密碼。我已經嘗試了很多小時的代碼記住我的用戶名和密碼,但我不能成功。如何在我的android登錄應用程序中使用記住我的功能

這是我的代碼,我從互聯網上下載,但它沒有爲我工作。

我已經在extends活動中聲明瞭這個變量。

public static final String PREFS_NAME = "MyPrefsFile"; 
public static final String PREFS_USER = "prefsUsername"; 
public static final String PREFS_PASS = "prefsPassword"; 

之後,我也宣佈了不同的變量,如下所示。

public String PREFS_USERS; 
public String PREFS_PASS; 

String username; 
String upass; 

並在點擊監聽器中給出了以下代碼。

SharedPreferences pref = getSharedPreferences(PREFS_NAME,MODE_PRIVATE); 

username = etUsername.getText().toString(); 
upass = etPassword.getText().toString(); 

getSharedPreferences(PREFS_NAME, MODE_PRIVATE) 
    .edit() 
    .putString(PREFS_USERS, username) 
    .putString(PREFS_PASS, upass) 
    .commit(); 

並且在重試的時候我已經在oncreate活動返回以下代碼重試我的用戶名和密碼。

SharedPreferences pref = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 

username = pref.getString(PREFS_USERS, ""); 
upass = pref.getString(PREFS_PASS, ""); 

但是當我運行該應用程序我不能得到的用戶名和password.First時候,我加載我檢查應用程序的記得我複選框在登錄後從應用程序註銷背部和關閉應用程序和當回到它時,它沒有爲我保存。

+0

您可以使用sqllite存儲用戶名和密碼並檢查是否已存在。 – Hasandroid 2011-06-17 13:24:37

回答

3

的問題是在聲明

你聲明

public static final String PREFS_NAME = "MyPrefsFile"; 
public static final String PREFS_USER = "prefsUsername"; 
public static final String PREFS_PASS = "prefsPassword"; 

public String PREFS_USERS; 
public String PREFS_PASS; //assigned null here 

.putString(PREFS_PASS, upass) //這裏PREFS_PASS的值爲null

使用下面的代碼

做得更好變量像下面這樣

public String PREFS_USERNAME= "prefsUsername"; 
public String PREFS_PASSWORD="prefsPassword"; 

存儲的數據使用下面的代碼

SharedPreferences pref = getSharedPreferences(PREFS_NAME,MODE_PRIVATE); 

passwordInString = password.getText().toString(); 
userNameInString = username.getText().toString(); 

getSharedPreferences(PREFS_NAME, MODE_PRIVATE) 
    .edit() 
    .putString(PREFS_USERNAME, userNameInString) 
    .putString(PREFS_PASSWORD, passwordInString) 
    .commit(); 

檢索像下面

SharedPreferences pref = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 

String usernameName = pref.getString(PREFS_USERNAME, ""); 
String upassWord = pref.getString(PREFS_PASSWORD, ""); 

由於數據 迪帕克

0

U可以做到這一點..創建默認值"false"布爾變量,當用戶爲據法權產一rememberMe布爾值設置爲true,並確認用戶密碼和其他的東西..前加上一個if condition並在此使用布爾值條件..

2

它應該是這個樣子(當然你可以使用全局變量,所以你不必在幾個地方指定它們):

String PREFS = "MyPrefs"; 
SharedPreferences mPrefs; 

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 
    mPrefs = getSharedPreferences(PREFS, 0); 

    //check if the remember option has been check before 
    boolean rememberMe = mPrefs.getBoolean("rememberMe", false); 

    if(rememberMe == true){ 
     //get previously stored login details 
     String login = mPrefs.getString("login", null); 
     String upass = mPrefs.getString("password", null); 

     if(login != null && pass != null){ 
      //fill input boxes with stored login and pass 
      EditText loginEbx = (EditText)findViewById(R.id.login_box); 
      EditText passEbx = (EditText)findViewById(R.id.pass_box); 
      loginEbx.setText(login); 
      passEbx.setText(upass); 

      //set the check box to 'checked' 
      CheckBox rememberMeCbx = (CheckBox)findViewById(R.id.remeber_cbx); 
      rememberMeCbx.setChecked(true); 
     } 
    } 
} 

private void saveLoginDetails(){ 
    //fill input boxes with stored login and pass 
    EditText loginEbx = (EditText)findViewById(R.id.login_box); 
    EditText passEbx = (EditText)findViewById(R.id.pass_box); 
    String login = loginEbx.getText().toString(); 
    String upass = passEbx.getText().toString(); 

    Editor e = mPrefs.edit(); 
    e.putBoolean("rememberMe", true); 
    e.putString("login", login); 
    e.putString("password", upass); 
    e.commit(); 
} 

private void removeLoginDetails(){ 
    Editor e = mPrefs.edit(); 
    e.putBoolean("rememberMe", false); 
    e.remove("login"); 
    e.remove("password"); 
    e.commit(); 
} 



你可能會調用saveLoginDetails()& removeLoginDetails()在onclick監聽器方法:

CheckBox rememberMeCbx = (CheckBox)findViewById(R.id.remeber_cbx); 
boolean isChecked = rememberMeCbx.isChecked(); 
if(isChecked){ 
    saveLoginDetails(); 
}else{ 
    removeLoginDetails(); 
} 


我希望你能發現它有用

0
SharedPreferences myPrefs; 

onCreate() 
{ 
    myPrefs=this.getSharedPreferences("PREF_NAME",Context.MODE_PRIVATE); 

    if(myPrefs.getBoolean("firstTime", false)) 
    { 
     startActivity(new Intent(this,SeeRecordsActivity.class)); 
     finish(); 
    } 
} 

登錄按鈕:

boolean c=chkbox.isChecked(); 

if(c==true) 
{ 
    SharedPreferences.Editor editor=myPrefs.edit(); 
    editor.putBoolean("firstTime", true); 
    editor.commit(); 
} 
相關問題