编辑:提供的“重复”并不能解决我的问题,因为它没有完全回答我的问题。 (缺少关于第二个参数的信息)。
此问题旨在清除新Android开发人员的信息,并不来解决我自己的问题。请重新考虑下注。
所以,这是方法:
getSharedPreferences(string, Context.MODE_PRIVATE);
我无法真正得到第一个参数的作用。它有什么作用?为什么有第一个参数,如果我们将某些内容保存到SharedPreferences
,我们会使用密钥?
答案 0 :(得分:3)
如Android Developer Documentation for getSharedPreferences()中所述,该方法的完整签名是:
SharedPreferences getSharedPreferences (String name, int mode)
正式签名提供第一个参数name
的名称,这是对答案有用的信息。 name
参数是位于应用程序私有存储中的XML首选项文件的基本名称(没有文件扩展名)。
例如,此调用将返回SharedPreferences
个实例,以允许读取和编写应用的settings.xml
首选项文件:
SharedPreferences sharedPrefs = getSharedPreferences("settings", Context.MODE_PRIVATE);
如官方文档中所示,返回的SharedPreferences
对象是单实例对象,在所有调用方之间共享相同的文件名。这意味着给定调用不一定意味着文件IO读取给定的首选项,但可能在同一个应用程序中的线程之间产生线程同步。
如果指定的文件在调用getSharedPreferences()
之前尚未存在,则会创建该文件。第二个参数mode
是创建文件时使用的模式,应设置为Context.MODE_PRIVATE
(或者它的整数值0
);其他模式值未记录为允许,不应使用。与创建任何文件时一样,指示Context.MODE_PRIVATE
模式会将文件定位到应用程序的私有存储中,与getSharedPreferences()
一样使用。
将值(999
)写入setting
实例中的键(SharedPreferences
)的示例如下:
Context context = getActivity();
SharedPreferences sharedPrefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putInt("setting", 999);
editor.apply();
从同一个键读取值是这样做的:
Context context = getActivity();
SharedPreferences sharedPrefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
sharedPrefs.getInt("setting", 0);
其他使用信息可在Saving Key-Value Sets。{/ p>的Android Getting Started Guide页面中找到
请注意,getSharedPreferences()
是getPreferences()
的通用版本,通常是常见应用程序首选项的更好选择。除了指定与getSharedPreferences()
使用哪个首选项文件的能力之外,这两种方法在功能和行为方面都是相同的。根据{{1}}文档,它只需使用" 此活动的类名作为首选项名称"来调用getPreferences()
。 (getSharedPreferences()
的第一个参数)。
答案 1 :(得分:-1)
String
中的getSharedPreferences()
参数是存储您提供的键和值的文件名。例如:
SharedPreferences.Editor s = getSharedPreferences("Pref",Context.MODE_PRIVATE).edit();
s.putInt("someKey",0);
s.apply();
将在您的应用中创建一个名为Pref
的输出文件,其中包含您输入的密钥。