Android SharedPreferences,如何保存一个简单的int变量[重复]

Posted

技术标签:

【中文标题】Android SharedPreferences,如何保存一个简单的int变量[重复]【英文标题】:Android SharedPreferences , how to save a simple int variable [duplicate] 【发布时间】:2013-04-18 03:45:00 【问题描述】:

我在最后一小时试图在我的 android 应用程序中保存一个整数。我读到这可以使用 SharedPreferences 来完成。但是我不明白为什么这样做看起来如此混乱。

我怎样才能简单地保存一个 int 变量?然后当我再次运行应用程序时,如何再次与该变量交互?

【问题讨论】:

一个简化的方法是使用这个库:github.com/viralypatel/Android-SharedPreferences-Helper ...扩展技术细节在我的answer here ... 【参考方案1】:
SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("your_int_key", yourIntValue);
editor.commit();

你可以得到它:

 SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
 int myIntValue = sp.getInt("your_int_key", -1);

SharedPreference 界面使您可以访问 xml 文件,并通过其编辑器轻松地对其进行修改。该文件存储在/data/data/com.your.package/shared_prefs/,您可以通过此SharedPreference API 访问它

【讨论】:

嗯,你能放一些 cmets 来了解那里发生了什么,因为我不明白这个例子吗?哪个是变量?什么是“your_prefs”。它旁边的0是什么。什么是“your_int_key” 实际上,您还需要为getInt 提供一个默认值,当找不到带有键your_int_keyint 时返回该默认值。像这样:int myIntValue = sp.getInt("your_int_key", -1); 其中 -1 是默认值。 我猜第一个例子中的clearNotificationsSP应该就是sp吧? 感谢您指出@scorchio 如果你使用 API 9 或更高版本,你应该使用 apply() 而不是 commit()【参考方案2】:
public void SaveInt(String key, int value)
       sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
       SharedPreferences.Editor editor = sharedPreferences.edit();
       editor.putInt(key, value);
       editor.commit();

public void LoadInt()
       sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
       savedValue = sharedPreferences.getInt("key", 0);

如果你想把变量保存在某个地方,你必须写 SaveInt("key", 5);这样你将保存值 5,而第一个默认值是 0。如果你想加载它并在另一个活动中使用它,你必须在那里编写这两个方法,并调用 LoadInt();你需要变量的地方。 savedValue 是一个预定义的整数(需要在任何你想使用保存变量的地方声明)

【讨论】:

gist.github.com/john1jan/b8cb536ca51a0b2aa1da4e81566869c4【参考方案3】:

这是设置布尔首选项的示例。您也可以使用整数。

SharedPreferences prefs = PreferenceManager
                    .getDefaultSharedPreferences(this);
            if (!prefs.getBoolean("firstTime", false)) 

                SharedPreferences.Editor editor = prefs.edit();
                editor.putBoolean("firstTime", true);
                editor.commit();
            

希望这可能会有所帮助。

【讨论】:

以上是关于Android SharedPreferences,如何保存一个简单的int变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android-SharedPreferences

android开发之路11(用SharedPreferences存储数据)

Android 工具类 SharedPreferences 封装

Android - 具有可序列化对象的 SharedPreferences

Android开发7:简单的数据存储(使?SharedPreferences)和文件操作

Android之SharedPreferences使用