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 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 CSS实现渐隐虚线框
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容