2012-05-22 60 views
1

我正在編寫一個應用程序以通過登錄界面保存密碼。用戶可以更改登錄密碼。第一次,我用下面的代碼保存密碼,使密碼不會復位時,應用程序重新推出:使用SharedPreferences保存用戶數據

@Override 
public void onSaveInstanceState(Bundle savedInstanceState){ 
    savedInstanceState.putString("pwd", currentPwd); 
    super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState){ 
    currentPwd = savedInstanceState.getString("pwd"); 
} 

但是之後我問的是,有人在該網站建議我用「SharedPreferences」。於是,我改變了代碼如下:

@Override public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.main); 
    SharedPreferences settings = getSharedPreferences("setting", 0); 
    currentPwd = settings.getString("pwd", "abc"); 
} 

@Override public void onStop(){ 
    super.onStop(); 
    SharedPreferences settings = getSharedPreferences("setting", 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString("pwd", currentPwd); 
    editor.commit(); 
} 

我的實驗後,我發現,密碼將在一小時後重設該相同的第一個代碼。我改變了錯誤的第二個代碼?或者有什麼建議的方法來解決它?謝謝。

回答

2

不知道我在下面的代碼,但這裏是我會怎麼做:

獲取口令:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
sp.getString("pwd", "abc"); 

要設置密碼:

SharedPreferences.Editor editor = sp.edit(); 
editor.putString("pwd", currentPwd); 
editor.commit(); 

。希望幫助

+0

現在的工作。謝謝。 –

0

您可以使用波紋管函數保存值。它僅包含上下文,鍵和值:

public void savePreferencesForReasonCode(Context context, 
    String key, String value) { 
    SharedPreferences sharedPreferences = PreferenceManager 
    .getDefaultSharedPreferences(context); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(key, value); 
    editor.commit(); 
    } 

爲了獲得更多的看到this Answer