SharedPreferences不保存数据

时间:2013-11-30 14:43:10

标签: android sharedpreferences

我正在尝试将密钥保存在密钥“密码”中。我打算在关闭应用程序时保存数据。所以我试着把数据放在一起将其保存在onStop()方法中。但它不起作用。

protected void onStop() {

    SharedPreferences prefs = this.getSharedPreferences(
            "gmail.nextgenancestor.knocked", Context.MODE_PRIVATE);
    prefs.edit().putString("password", password);
    prefs.edit().commit();

    Log.d("password", password);
    Log.d("goodbye", prefs.getString("password", "not found"));

    super.onStop();


}

日志的结果:

密码:紧急

再见:未找到

3 个答案:

答案 0 :(得分:0)

问题在于prefs.edit()创建了一个Editor的实例,您必须在提交时重复使用该实例。这应该修复代码:

SharedPreferences prefs = this.getSharedPreferences(
        "gmail.nextgenancestor.knocked", Context.MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("password", password);
editor.commit();

答案 1 :(得分:0)

问题是您在SharedPreferences.Editor的实例中设置数据,而您没有在其上调用commit()。试试这个:

SharedPreferences prefs = this.getSharedPreferences("gmail.nextgenancestor.knocked", Context.MODE_PRIVATE);
prefs.edit().putString("password", password).commit();

或:

SharedPreferences prefs = this.getSharedPreferences("gmail.nextgenancestor.knocked", Context.MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("password", password);
editor.commit();

以下是关于如何在Android

中使用SharedPreferences的{​​{3}}

答案 2 :(得分:0)

替换

SharedPreferences prefs = this.getSharedPreferences(
            "gmail.nextgenancestor.knocked", Context.MODE_PRIVATE);
    prefs.edit().putString("password", password);
    prefs.edit().commit();

SharedPreferences prefs = this.getSharedPreferences(
                "com.example.dsfsdf", Context.MODE_PRIVATE);
Editor edit = prefs.edit();
edit.clear();
edit.putString("password", password);
edit.commit();