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));
    }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题