android-在执行 commits 后 SharedPreferences 不能保存

问题描述

在执行 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 没有保存。

解决方案

重新获取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));
}
}
时间: 2024-08-26 07:56:47

android-在执行 commits 后 SharedPreferences 不能保存的相关文章

在android系统执行ota升级后,能否将自动重启改为手动重启

问题描述 在android系统执行ota升级后,能否将自动重启改为手动重启 在android系统执行ota升级后,能否将自动重启改为手动重启,如何修改bootable/recovery中的代码:在应用层能否通过编写android程序控制系统的重启????? 解决方案 我只能回答一个问题,应用层不可以直接控制系统的重启,因为权限不够. 如果系统root过,可以尝试用java调用reboot命令的方式.

android 关于使用SharedPreferences来保存对象里既有属性又有集合的问题

问题描述 android 关于使用SharedPreferences来保存对象里既有属性又有集合的问题 大神们,帮帮忙呀!拜托!http://bbs.csdn.net/topics/390983835 解决方案 先把PlayList对象转换为JSON形式的字符串,用SharedPreferences来保存字符串. /** * 把播放列表转换为JSON形式以字符串形式保存 * @param context * @param object 播放列表对象 */ public static void g

前端-android 怎么保持登录后与后台的通信

问题描述 android 怎么保持登录后与后台的通信 有些操作是登录后才能做的,比如查看购物车,android登录后前端用sharedpreferences判断了是否是登录状态,但如何保存与后台的连接呢,前端需要存cookis还是取cookis呢??? 解决方案 一般做法,登录成功后,服务端会返回一个token,这就是你访问接口的钥匙,当然在后台,这个token是有时效的,一旦你很久没有操作,再次访问接口时,会提示你token失效,需要重新登录,当然还有自动换token的,这就是自动登录

启动页-android 应用被回收后 重新打开会先显示广告页

问题描述 android 应用被回收后 重新打开会先显示广告页 android 应用在后台运行被系统回收后,再次切回应用会先出现启动应用的第一个界面再跳到之前应用被回收之前的界面,例如微信的那个第一张地球图片的那个界面 解决方案 AndroidManifest.xml 中添加: android:name="com.activity.SplashActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen

【ANDROID游戏开发十二】(保存游戏数据 [上文])详解SHAREDPREFERENCE 与 FILEINPUTSTREAM/FILEOUTPUTSTREAM将数据存储到SD卡中!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/327.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读:

全局变量-js刷新页面后怎么能保存之前赋值的数据不丢失

问题描述 js刷新页面后怎么能保存之前赋值的数据不丢失 在jsp页面中通过js刷新页面,在刷新之前我给input标签和A标签都赋值了 以及和一些全局变量都赋值了. 我想通过js刷新之后把刚才标签或者是变量的值都保存下来,以便接下来用. 但是,现在js刷新之后上面的那些数据都丢失了. 请问有什么办法能让刷新之后还能保存住数据不丢失. 那位大神知道. 解决方案 页面无刷新调用数据(IFRAME+js) 解决方案二: 刷新后,你先查一下保存的变量中的数值是否正确? 如果正确,则需要在刷新完成后执行一下

android怎样把listview显示的数据保存到本地

问题描述 android怎样把listview显示的数据保存到本地 我想把listview上的数据保存本地(可以是保存到SD卡中或者是sharedpreferences都可以) 解决方案 原始数据可以用序列化保存成文件,或者自己用stream保存 解决方案二: List list = new ArrayList(0); SharedPreferences sp = getSharedPreferences(""file"" MODE_PRIVATE); Editor

Android Java执行Shell命令

主要介绍Android或Java应用中如何以默认用户或root用户执行Shell命令,ShellUtils的API介绍.使用及使用场景(如静默安装和卸载.修改hosts文件.拷贝文件).使用纯Java实现,所以对Java程序同样适用. 很多朋友在使用TrineaAndroidCommon@Github中的ShellUtils工具类了,那就大致介绍下他的功能吧. 1.API介绍 以下是ShellUtils中最终执行命令的方法execCommand: Java 1 public CommandRes

android broadCastReceive动态注册后必须调用注销吗?

问题描述 android broadCastReceive动态注册后必须调用注销吗? android broadCastReceive动态注册后必须调用注销吗?静态注册就算关闭程序,还会接收广播吗,静态注册能注销吗? 解决方案 最近在学广播接受者.印象中动态注册了不一定要注销的(不会直接导致报错),但是会一直占用资源,所以不用了建议注销掉.刚刚上网查了查:动态注册和静态注册一个BroadcastReceiver的区别:动态注册较静态注册灵活.实验证明:当静态注册一个BroadcastReceiv