Articles of sharedpreferences

如何将多个JSONObjects放入/获取到JSONArray?

是否可以将多个不同的JSONObject存储到单个JSONArray ? 这是结构,我想存储在JSONArray 。 [{“value1″:1,”value2″:900,”value3”:1368349},{“value1″:2,”value2″:1900,”value3”:136856},{“value1″:3,”value2″:600,”value3”:136845}] 这是我设置JSONObject并将其放入JSONArray if(somecondition) { // putting values to json object jsonObj.put(“value1”, 1); jsonObj.put(“value2”, 900); jsonObj.put(“value3”, 1368349); } for(int i=0;i<=jsonArray.length();i++){ jsonArray.put(jsonObj); appObj.setJsonAlarmArray(jsonArray); // appObj is object of Application Class editor= sharedPrefs.edit(); editor.putString("key", jsonArray.toString()); System.out.println(jsonArray.toString()); editor.commit(); } 使用此代码只有最后一个值,我在JSON对象中设置覆盖所有对象。 有任何建议来实现这一目标

设置多个SharedPreferences实例/文件的默认值

假设我有一个应用程序将首选项保存到两个文件, preferences1.xml和preferences2.xml 。 然后,我可以使用以下代码检索对相应对象的引用: SharedPreferences sharedPrefs1 = getSharedPreferences(“preferences1”, MODE_PRIVATE); SharedPreferences sharedPrefs2 = getSharedPreferences(“preferences2”, MODE_PRIVATE); 通过这种方式,我可以操纵两者的首选项并注册侦听器以进行更改。 我对这两个文件的初始化有一些疑问,使用setDefaultValues : 问题1 – PreferenceFragment上下文 :我创建了一个带有两个PreferenceFragments的PreferenceActivity,并且在每个PredenceFragate的onCreate方法中执行以下代码(对于片段1和2,将X替换为1和2): PreferenceManager pm = getPreferenceManager(); pm.setSharedPreferencesName(“preferencesX”); PreferenceManager.setDefaultValues(getActivity(),R.xml.preference_fragmentX, false); 我已经看到这两个片段在启动时正确地设置了它们的默认值。但是,鉴于我只能在应用程序的shared_prefs目录中看到一个_has_set_default_values.xml文件,它如何理解属性preferences1.xml和preferences2.xml已经设置好了吗? 在第一个打开的PreferenceFragment中调用setDefaultValues后立即创建此文件,但即使在此之后,如果我打开第二个PreferenceFragment,它也会正确初始化默认值。 它是如何理解它尚未初始化preferences2.xml以及_has_set_default_values.xml的目的是什么,因为它不包含有关哪些优先文件已被初始化的信息? 问题2 – 标准活动上下文 :当我启动我的应用程序时, PreferenceActivity不是第一个启动的活动,用户可能永远不会打开它,所以我想在主Activity中初始化两个首选项文件及其默认值,我怎样才能做到这一点? 对于默认的共享首选项,很容易: PreferenceManager.setDefaultValues(this, R.xml.default_preferences, false); 对于两个首选项文件,我该怎么办? 我无法执行以下操作,因为我无法在PreferenceFragment类中检索PreferenceManager的实例: PreferenceManager pm = getPreferenceManager(); // NOT AVAILABLE AND NOT WANTED pm.setSharedPreferencesName(“preferences1”); PreferenceManager.setDefaultValues(getActivity(),R.xml.preference_fragment1, false); […]

在用户卸载应用程序上未删除SharedPreferences

有没有人在Nexus 6P设备上遇到过这个问题? 我只是在Nexus 6P(运行Google Fi)上遇到此问题。 当我安装应用程序时,在SharedPreferences有一个用于userIsLoggedIn的键。 这个块: boolean userIsLoggedIn = SharedPrefs.userIsLoggedIn(this); // Then in another class… public static boolean userIsLoggedIn(Context context) { // For users updating apps, if the previous key-value is a string, convert it to boolean try { return context.getSharedPreferences(LOGIN_FILE, Context.MODE_PRIVATE) .getBoolean(USER_LOGGED_IN, false); } catch (ClassCastException e) { Logger.e(TAG, e.getMessage()); context.getSharedPreferences(LOGIN, Context.MODE_PRIVATE) .edit() […]

同一应用程序的两个进程之间的共享首选项

我正在编写一个Android应用程序,其中包含UI和运行的单独进程。 我想在主进程和我的应用程序中定义的服务之间共享简单信息,该服务在不同的进程中执行。 为此,我发现使用AIDL进行进程间通信会很麻烦。 问题是:使用应用程序的共享首选项在这两个进程之间进行通信是否安全? 这是:读取和写入相同的共享首选项。 我想知道它是否真的有效。 在android开发人员中有关共享首选项的参考(http://developer.android.com/reference/android/content/SharedPreferences.html),他们声明: 注意:目前这个类不支持跨多个进程使用。 这将在稍后添加。 但我不确切地知道这是什么意思。 谢谢你的帮助

BackupManager未调用备份传输

好吧,所以我正在尝试将数据备份实施到我的应用程序中,并且一直在遵循本指南 。 我使用SharedPreferencesBackupHelper实现了我的BackupAgentHelper 。 我没有得到任何错误,并且我确定在所有首选项更改后调用dataChanged() ,但是当我测试备份(`adb shell bmgr run)时,我在LogCat中获取此信息: 07-07 12:29:00.258: V/BackupManagerService(291): Scheduling immediate backup pass 07-07 12:29:00.258: V/BackupManagerService(291): Running a backup pass 07-07 12:29:00.258: V/BackupManagerService(291): clearing pending backups 07-07 12:29:00.258: V/PerformBackupTask(291): Beginning backup of 1 targets 07-07 12:29:00.289: V/BackupServiceBinder(291): doBackup() invoked 07-07 12:29:00.289: D/PerformBackupTask(291): invokeAgentForBackup on @pm@ 07-07 12:29:00.297: I/PerformBackupTask(291): no backup data written; […]

将Bundle保存到SharedPreferences

我已经竭尽全力让我的Android游戏的所有数据都适合saveInstanceState Bundle。 总共有很多数据,包括许多Parcelable对象。 这可确保当应用程序暂停或方向更改时,重新创建的活动不会丢失任何数据。 但是,我刚刚发现savedInstanceState包显然不适合长期存储。 所以我正在寻找一种方法,我可以调整我现有的保存方法作为长期解决方案,以便始终可以恢复游戏状态。 到目前为止,我听说过2个解决方案: 1)使用savedInstanceState包进行方向更改,但在需要完全关闭应用程序时还要包含SharedPrefs。 这看起来非常适得其反,因为它使用2种不同的完全方法来做同样的事情。 此外,由于我的savedInstanceState Bundle使用Parcelable对象,因此我必须为这些对象中的每一个提供另一种方法,以使它们能够写入SharedPrefs。 基本上很多重复和难以管理的代码。 2)序列化savedInstanceState Bundle并将其直接写入文件。 我对此持开放态度,但我实际上并不知道如何去做。 但是,我仍然希望可能有更好的解决方案,因为我听说Android中的序列化“可笑/非常慢”。 如果有人能为我提供解决方案,我将非常感激。

安装应用程序时只运行一段代码

我想在我的应用程序中只运行一段代码,并且是第一次运行它时(新安装的应用程序)。 我怎么能这样做,任何人都可以解释给出一段代码。 实际上,在我的android项目中,我想创建数据库并在第一次运行时插入一些值。 在那之后,那段特定代码不应该再次运行。 如何通过SharedPreferences或Preferences实现此机制。 示例代码将更有帮助。

如何获得在Android中使用的偏好设置?

我真的在努力解决这个问题。 Java / Android新手。 我正在编写我的第一个应用程序,这是第一件让我花费超过几天寻找时间的东西。 这是设置:这是一个BAC计算器/饮料柜台: 公式用于计算BAC。 这是论坛: Bac = ((StandardDrinks / 2) * (GenderConstant / Weight)) – (0.017 * Hours); 如您所见,能够修改性别和体重将产生更准确和个性化的结果。 所以我把它们作为双打: double GenderConstant = 7.5; //9 for female double Weight = 180; 要更改这些variables,我希望此人能够进入设置并选择不同的值。 我已经设置了这些东西,但没有链接到上面显示的variables,因为我不能为我的生活弄清楚如何。 他们来了: 我按下菜单按钮,popup。 大。 我将点击“设置”。 现在popup首选项。 这是我的preferences.xml: 向前重量ListPreference: 这表明了。 这些值在res / values / arrays.xml中存储为字符串数组。 这是一个样本,只有权重的样本: 120 lbs 150 lbs 180 […]

BackUpAgentHelperClass没有被调用

我想使用扩展BackupAgentHelper的MyBackUpAgent类在Android中备份数据。 我正在使用SharedPreferences来存储数据。 我的主要活动代码是: public class MainActivity extends Activity { EditText inputtext; TextView outputtext; Button submit; public static SharedPreferences sharedprefs; static final String File_Name_Of_Prefrences =”godplay_preferences”; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); init(); sharedprefs=getSharedPreferences(File_Name_Of_Prefrences,MODE_PRIVATE); System.out.println(“value=”+sharedprefs.getString(“Input”,””)); outputtext.setText(sharedprefs.getString(“Input”,””)); submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub populateUI(); } }); } public […]

操作栏主页按钮无法使用嵌套的PreferenceScreen

我find了一种解决方法,可以在嵌套的PreferenceScreen上实际启用ActionBar主页按钮…但是它不会在我的PreferenceActivity中调用OnOptionsItemSelected。 有人知道在嵌套的PreferenceScreen上实际使用主页按钮的方法吗? 这里修改第35条: http://code.google.com/p/android/issues/detail?id=4611 @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { super.onPreferenceTreeClick(preferenceScreen, preference); if (preference!=null) if (preference instanceof PreferenceScreen) if (((PreferenceScreen)preference).getDialog()!=null) ((PreferenceScreen)preference).getDialog().getActionBar().setHomeButtonEnabled(true); return false; }