Articles of 共享偏好

如何检查SharedPreferences文件是否存在

我正在寻找一个Android共享首选项,我想知道有没有办法只检查首选项文件是否存在。 SharedPreferences mySharedPreferences ; mySharedPreferences=getSharedPreferences(“Name_of_your_preference”,mode); 上面的代码让我相信“Name_of_Your_preferene”存储为一个文件或某种包含您的首选项的容器。 我想知道是否在那里检查是否存在。 当用户加载活动时,我想将所有设置保存到此文件中,并带有一些默认值(所有设置均为关闭)。 但是,如果他们第一次访问该页面,我只想这样做。 否则,如果每次页面加载时我都会这样做 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”); 我猜它会覆盖他们设置的所有设置。

阅读共享偏好

我正在使用我的Android应用程序的设置菜单的共享首选项。 它工作得很好,但我不知道如何在我的代码上使用这些设置: 例如,如何使用所选语言并在另一个活动中使用它:

Android – 拥有多个共享首选项是不好的做法吗?

我有一个使用SharedPreferences的应用程序。 一个只是存储应用程序版本以检查更改日志的更新,另一个包含一些布局信息, clear()在用户选择时被调用。 我终于设法让PreferenceFragment工作并发现了一个趋势,所以我想我可能会在我偏爱疯狂之前问这个(尽管我认为我已经足够了)。 我已经尽力搜索并没有特别提到问题,只是有可能有倍数。 我有点担心PreferenceManager.getDefaultSharedPreferences()抓住错误的pref,但我可能只是误解了用法。 我可以从我的活动中想到的唯一相关代码: SharedPreferences storedVer = getSharedPreferences(VER_NUM, 0); SharedPreferences savedLayout = getSharedPreferences(LAYOUT_SAVE, 0);

当Android SharedPreferences commit()返回false时?

在我的应用程序中,我将一些重要数据存储在SharedPreferences – 它可以根据需要运行。 现在我想为一些不正确的情况创建日志消息。 我有情况的消息,当首选项为空或只是在加载时抛出一些exception。 如果commit()方法返回false,则只有在保存时才会出现不正确的情况 – 我不知道为什么会发生这种情况以及在这种情况下应该做些什么。 所以问题是 – 当commit()方法返回false时? while(!editor.commit()) {;}可以成为成功的解决方案吗?

SharedPreferences总是在我现有的应用程序中获得默认值,但是在创建新应用程序时它可以

SharedPreferences在一个现有应用中无法正常工作。 我尝试了很多不同的方法,但仍然没有工作。 始终获取默认值app start start。 当我在创建的新应用程序中使用相同的代码时,它正在工作。 它正在运行所有其他现有应用程序。 你知道为什么吗? String default_user = “Default_User”; SharedPreferences pref = this.getSharedPreferences(“TEST_SHAREDPREF”, MODE_PRIVATE); String user = pref.getString(“user”, default_user); Log.d(“SHARED CHECK”, user); if (user.equals(default_user)) { SharedPreferences.Editor edit = pref.edit(); edit.putString(“user”, “new_user”); boolean ok = edit.commit(); user = pref.getString(“user”, default_user); Log.d(“SHARED WRITE”, user); Toast.makeText(this, user + ” Save process: ” + ok, Toast.LENGTH_LONG).show(); […]

我可以更改首选项文件名吗?

在我的应用程序中,我试图使用sharedPreferences来保存一些基本设置以及首选项屏幕。 我的sharedPreferences的名称是appPrefs,因此我的文件名是… / appPrefs.xml然而,我的应用程序屏幕将它的首选项保存在default.SharedPreference文件中,即com.COMPANY.PACKAGENAME_preferences.xml 我想做的是让我的首选项屏幕将其首选项读/写到appPrefs文件。 我查看了API,找不到任何东西。 我是不是要管理两个sharedPreference文件?

如何在SharedPreferences中存储Date对象?

是否可以使用SharedPreferences存储Date对象? 实际上在我的代码中我有一个Stringvariables, boolean和Date 。 这是我存储除Date之外的所有对象的函数。 那么如何做呢请建议我? private void SavePreferences() { String key=”1″; String value=”hello”; int x=5; Date currentDate=new Date(); SharedPreferences sharedPreferences = getPreferences(MODE_APPEND); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(key, value); editor.putInt(“2”,5); editor.commit(); } 所以我的问题是如何使用SharedPreferences存储Date ?

SharedPreferences访问耗时吗?

我目前正在尝试为我的应用测试第三方服务,并且需要确定每次特定运行时正在进行的每项测试。 由于每次运行testApp时都可以进行多次测试,因此我需要识别每个测试。 我想到的是存储设备名称和构建(这里没有很多设备),以及每个测试的索引。 private String getTestId(){ SharedPreferences settings = getPreferences(0); SharedPreferences.Editor editor = settings.edit(); int testNumber = settings.getInt(“id”, 0); editor.putInt(“id”, testNumber+1); editor.commit(); String id = Build.DEVICE + Build.VERSION.RELEASE+” – test number: “+testNumber; return id; } 每次运行测试时都会运行此function,还是可以在不担心海岸的情况下执行此function? 如果答案是“耗时”,那么每次我进行测试以区分每项测试时,你会建议我做什么?

如何将List 保存到SharedPreferences?

我有一个产品列表,我从webservice检索,当应用程序第一次打开时,应用程序从webservice获取产品列表。 我想将此列表保存到共享首选项。 List medicineList = new ArrayList(); 产品类是: public class Product { public final String productName; public final String price; public final String content; public final String imageUrl; public Product(String productName, String price, String content, String imageUrl) { this.productName = productName; this.price = price; this.content = content; this.imageUrl = imageUrl; } } 我怎么能保存这个List而不是每次都从webservice请求?

sharedPreferences不会在活动之间共享

我正在尝试使用SharedPreferences来保存设置。 但我似乎无法在我的任何活动之间共享数据。 我正在使用的代码确实设法保存设置,但每个活动似乎都有自己的每个variables版本。 所以举个例子。 我有一个音频设置活动,用户可以在其中为保存的variables“musicVolume”赋值。 如果我关闭游戏并重新加载,则音频设置活动会“记住”该值。 但是,如果我尝试将值加载到任何其他活动中,它将无效。 但是,他们都可以加载并保存自己的同名variables。 这些是我用来保存variables的方法。 每项活动都有这些方法的副本。** 正如我所说,它们起作用,但它们似乎只能读取和写入它们所在的单个活动的数据。 public void SavePreferences(String key, float value) { SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putFloat(key, value); editor.commit(); } public void LoadPreferences() { SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); musicVolume = sharedPreferences.getFloat(“musicVolume”, (float)0.123); soundEffectsVolume = sharedPreferences .getFloat(“soundEffectsVolume”, (float)0.123); } public void ClearPreferences() { SharedPreferences sharedPreferences = […]