2011-06-17 40 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(); 
} 
相关问题