1

ログインインターフェースでパスワードを保存するアプリを書いています。ユーザーはログインパスワードを変更できます。初めて、次のコードを使用してパスワードを保存し、アプリの再起動時にパスワードがリセットされないようにします。

@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();
} 

実験の結果、最初のコードと同じ1時間後にパスワードがリセットされることがわかりました。2番目のコードで間違って変更しましたか?またはそれを解決するための提案された方法はありますか?ありがとうございました。

4

2 に答える 2

2

私があなたのコードをフォローしているかどうかはわかりませんが、これを行う方法は次のとおりです。

パスワードを取得するには:

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

パスワードを設定するには:

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

お役に立てば幸い

于 2012-05-22T06:31:10.300 に答える
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();
    }

詳細については、この回答を参照してください

于 2015-07-31T06:00:27.220 に答える