cheli_71 2013-09-22 05:39 采纳率: 0%
浏览 2652

在执行 commits 后 SharedPreferences 不能保存

我从一个简单的的 activity 中获取 SharedPrefs 的值,在每次程序创建的时候值都增加1。因此我希望当打开和关闭程序时值能增长。但是值好像没有保存。在值每次改变时我使用 commit。

public class SharedPreferencesActivity extends Activity {
/** Called when the activity is first created. */

public static final String PREFERENCE_FILENAME = "MyGamePreferences";  

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    int int_out = 0;
    SharedPreferences gameSettings = getSharedPreferences(PREFERENCE_FILENAME, MODE_PRIVATE);
    SharedPreferences.Editor prefEditor = gameSettings.edit();

    int_out = gameSettings.getInt("Username", 0);
    Log.e("Pre",Integer.toString(int_out));
    int_out = int_out + 1;
    Log.e("During",Integer.toString(int_out));
    prefEditor.putInt("UserName", int_out);
    prefEditor.commit();
    int_out  = gameSettings.getInt("Username", 0);

    Log.e("Post",Integer.toString(int_out));
}
}

从 Log.e 语句中代码的输出:

Pre: 0 During: 1 Post: 999

但是执行下面的代码后:

calling prefEditor.commit();
int_out  = gameSettings.getInt("Username", 0);

SharedPref gameSettings 没有保存。

  • 写回答

1条回答 默认 最新

  • Jobernowl 2013-09-24 01:54
    关注
    重新获取SharedPreferences来读取值
    以上代码改为:
    public class SharedPreferencesActivity extends Activity {
    /** Called when the activity is first created. */
    
    public static final String PREFERENCE_FILENAME = "MyGamePreferences";  
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        int int_out = 0;
        SharedPreferences gameSettings = getSharedPreferences(PREFERENCE_FILENAME, MODE_PRIVATE);
        SharedPreferences.Editor prefEditor = gameSettings.edit();
    
        int_out = gameSettings.getInt("Username", 0);
        Log.e("Pre",Integer.toString(int_out));
        int_out = int_out + 1;
        Log.e("During",Integer.toString(int_out));
        prefEditor.putInt("UserName", int_out);
        prefEditor.commit();
        int_out  = getSharedPreferences(PREFERENCE_FILENAME, MODE_PRIVATE).getInt("Username", 0);
    
        Log.e("Post",Integer.toString(int_out));
    }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能