问题标签 [android-sharedpreferences]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
202 浏览

android - Android 中 SharedPreferences 的保存/加载问题

对不起,如果这是一个愚蠢的问题。我正在学习使用 SharedPreferences,但遇到了一点问题:我正在使用此代码保存到 SharedPreferences:

这段代码加载保存的值:

我也已经在外面声明了首选项和编辑器,所以这不应该是一个问题:

现在,我的问题是,当我进入此活动并保存从其他活动收到的文件时(通过 putExtra,如果有帮助),然后继续加载它一切正常。 然后我重新进入我的活动而不向它发送任何文件(来自其他活动)并尝试使用loadFromMemory()并且它不起作用。我的理解是第一次进入Activity的时候应该已经保存了文件,然后想加载就加载。

有什么帮助吗?

0 投票
0 回答
149 浏览

android - Android SharedPreference 保存敏感数据

我正在尝试找出一种存储登录用户数据的好方法。

我正在考虑将用户 ID 保存到 SharedPreference“MODE_PRIVATE”中。

我的问题是,如果用户创建一个 id 为 1 的帐户。是否可以篡改 APK 并将值更改为 2?这样,当他重新打开应用程序时,他可能会以用户 2 的身份错误登录?

如果是的话,我很想得到一个解释和想法,以找到更好的解决方案来解决这个问题。

0 投票
1 回答
34 浏览

android - Android:在 ListView 中存储和显示字符串

我需要一个DialogFragment或类似的,ListView其中包含一个字符串列表。我还需要有某种页脚或其他东西,这样我就可以在ListView. 基本上,它是一个对话框,用户可以在其中指定端点并将其添加到应用程序,然后单击其中的一个String将使ListView应用程序连接到该端点。

我怎么能这样做?我应该使用ListView带页脚的 a 吗?如何将字符串存储在设备中?

提前非常感谢!

0 投票
1 回答
564 浏览

android - 在 SharedPreferences 中保存大约 30 个字符串数据并显示 java.lang.OutOfMemoryError

我想在我的 android 应用程序中保存大约 30 个字符串数据,但有时在内存几乎已满的 android 手机中,会出现此错误:

致命异常:在 com.android.internal.util.FastXmlSerializer.(FastXmlSerializer.java) 在 com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:177) 在 android.app.SharedPreferencesImpl 的 java.lang.OutOfMemoryError。 writeToFile(SharedPreferencesImpl.java:596) at android.app.SharedPreferencesImpl.access$800(SharedPreferencesImpl.java:52) at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:511) at android.app.SharedPreferencesImpl.enqueueDiskWrite(SharedPreferencesImpl .java:532) 在 android.app.SharedPreferencesImpl.access$100(SharedPreferencesImpl.java:52) 在 android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:454)

在 sharedpreference 中保存大约 30 个字符串仍然很好吗?

我从这里读到不要为每个更改创建一个新的编辑器,也许我必须更改一些调用新编辑器的字符串更改,这对防止 java.lang.OutOfMemoryError 有很大的贡献还是我必须做其他事情?

0 投票
3 回答
259 浏览

android - 在 Android 应用中更改主题

我想用按钮动态改变我的应用程序的主题,所以我实现了这个:

这是按钮的代码:

问题是代码只是更改了相关活动的主题,并没有在所有应用程序中更改主题。

0 投票
1 回答
252 浏览

android - SharedPreference 实例是否被缓存?(通过 PreferenceManager.getDefaultSharedPreferences())

在我的应用程序中,我调用:

这反过来又在内部调用它。

Context是抽象的,因此实现可以相互派生,但我想知道是否SharedPreferences每次调用都会创建一个新实例;或者如果它在内部重用一个实例?

0 投票
0 回答
54 浏览

android - 使用带复选框的 SharedPreferences 并在一个 Activity 和一个 Fragment 之间切换

因此,由于 Displaymetrics,我有一个看起来像Popup的活动,其中我有几个CheckBox(checkBox1、checkBox2 等)。

当我离开此活动(以及部署进一步的操作:播放声音、附加字符串等)时,我想保存他们的选中或未选中状态,我通过使用SharedPreferences做到了这一点。

到目前为止,工作代码是

简直太完美了!

然后,我在我的实际项目中上传了同样的代码,其中一个片段启动了复选框所在的弹出活动。

当我在弹出区域之外单击时(是的,我在上一个项目中也通过处理活动的样式来完成它,效果很好)并重新进入弹出活动,我看到状态不再保存!

两个项目具有相同的样式、复选框的 ID、元素等,它是纯粹的复制和粘贴,我认为原因是 Popup Activity 之前的活动是Fragment

简而言之:片段-->单击--->打开弹出活动--->我标记任何一个复选框-->我在外部单击或按回物理设备-->我重新打开弹出活动和我拥有的复选框左检查不再检查。

为什么这样?片段有什么变化,我应该如何调整我的代码?

编辑:

这是 POPUP 活动的原始代码

公共类 Popup1 扩展 Activity {

0 投票
3 回答
51 浏览

java - 在另一个活动中检索 sharedpreferences 字符串

我正在尝试使用 sharedpreferences 在一个活动中保存一些 edittext 字段,然后将这些保存的值输出到另一个活动的 textview 字段。数据似乎在第一个活动中保存正常,但我无法在新活动中解析存储的变量。有谁知道我做错了什么?谢谢!

第二个活动如下。我正在尝试在 sharedpreferences 中检索 Name 变量,但它显示为红色并出现错误。无法解析符号“名称”。

0 投票
1 回答
109 浏览

android - 如果被杀,应用程序会要求登录

我有一个应用程序,我在其中设置了使用 facebook 登录的选项。用户登录后,我在 Shared Preferences 中存储一个布尔值,以便下次用户打开应用程序时,他会被定向到主屏幕而不是登录屏幕。

我注意到一件事,如果我杀死该应用程序,它会在我下次打开它时要求登录。它是android应用程序的默认行为还是可以修复它以便我的应用程序即使在它被杀死后也能保留登录参数?

我正在使用TinyDB从 SharedPreferences 存储和检索值。

这是我的onCreate方法:

0 投票
2 回答
82 浏览

android - 从数据库加载首选项

我对每个实体都有一组偏好片段(铃声、阈值……)。所以我宁愿数据库中加载相关内容也不愿从 SharedPrefences 加载相关内容。做这个的最好方式是什么?有没有办法拦截从/到 SharedPreferences 的加载/保存过程?

如果可能的话,我想避免自定义布局,因为内置的首选项功能更快更容易实现。