我正在寻找一个Android共享首选项,我想知道有没有一种方法可以只检查首选项文件是否存在。
SharedPreferences mySharedPreferences ;
mySharedPreferences=getSharedPreferences(“Name_of_your_preference”,mode);
字符串
上面的代码使我相信“Name_of_Your_preferee”是作为一个文件或某种容器存储的,其中包含您的首选项。
我想知道有没有办法检查这个是否存在。当一个用户加载一个活动时,我想用一些默认值(关闭所有设置)将所有设置保存到这个文件中。但是,我只想在他们第一次访问这个页面时这样做。
否则如果我每次加载页面时都这样做
SharedPreferences.Editor editor= mySharedPreferences.edit();
/* now store your primitive type values. In this case it is true, 1f and Hello! World */
editor.putBolean(“myBoolean”,true);
editor.putFloat(“myFloat”,1f);
editor.putString(“myString”,” Hello! World”);
我猜它会覆盖所有的设置,甚至是他们设置的。
8条答案
按热度按时间w1jd8yoj1#
共享首选项保存在xml文件中。您可以在/data/data/您的应用程序包/共享首选项/您的首选项名称. xml中找到该文件
要检查共享首选项“Name_of_your_preference”是否存在:
问候。
3ks5zfa02#
您可以在
SharedPreferences
对象上使用contains
方法来检查文件中是否存在某个首选项键。如果返回false
,则可以假定这是第一次,并填充默认设置。此方法的文档在此处。我找不到任何方法来检查首选项文件是否已经存在(它将在您第一次检索编辑器时自动创建),但这个方法应该可以。
wwwo4jvm3#
我没有足够的代表来评论natur 3的帖子。因此这个答案。
@natur3:非常有帮助,谢谢。但是我有一个小问题......文件后缀。如果我这样定义我的文件名:
然后用途:
f.exists()将返回false,即使文件系统上存在该文件。这是因为Android在编写SharedPreferences时会自动添加后缀“.xml”,所以我不得不让我的文件引用看起来像这样:
我不知道你的“_preferences.xml”后缀是从哪里来的。
我设法通过使用Window-〉Show View-〉Other...浏览Eclipse中的模拟器文件系统,然后选择“文件资源管理器”来解决这个问题。
bprjcwpo4#
除了硬编码“/data/data/”路径之外,您还可以执行以下操作:
p5cysglq5#
我这样做,使其适应海事组织。
我在onCreate的一个验证过程中使用了这个方法,如果首选项存在或不存在,并根据答案启用一个按钮来清除首选项或不清除-如果没有手动命名,只需验证DDMS中首选项文件的名称。
whitzsjs6#
最简单的方法,我发现,我们可以检查是否存在共享的首选项由Android上的内置代码
检查首选项是否包含首选项。(它是抽象布尔公共方法)
简单易行:)
13z8s7eq7#
这似乎是一个更准确的解决方案
或者只是
pkln4tw68#
我对解决方案的看法:
这让我可以说
而无需Android在幕后创建“alternativeConfigFile.xml”。