问题标签 [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 投票
1 回答
245 浏览

java - 如何将偏好的变化反映到班级?

我创建了一个具有属性 String 的简单类“User” username。我假设由于 Android 使用 Java,我可以创建自定义类,它会相应地使用它们。在我的 SettingsActivity.java 中,我有:

截至目前,每当我更改EditTextPreference小部件的值时,它都不会更新位于MainMenu. 另外,一个后续问题 - 由于 Android 会在每个应用启动实例中保存首选项,我将如何在启动时更新我的User.username​​字符串?

0 投票
1 回答
274 浏览

android - 即使android的应用程序包已在离线模式下卸载,也保持共享偏好

我发现备份可以在应用程序卸载后恢复共享首选项,只是想知道即使应用程序已在离线模式下卸载,是否仍将 SharedPreferences 保留在设备中?

0 投票
1 回答
112 浏览

android - SharedPreferences 空指针异常

我正在尝试通过 getSharePreferences 加载一些数据。我将保存和恢复放在一个单独的类中,可以从不同的活动中访问。目前我只用一个来测试。但是每次我运行应用程序时它都会崩溃。


调用代码:


cs_settings:


错误:

0 投票
1 回答
770 浏览

java - 为什么 EditTextPreference setText("string") 仅在开始时在内部工作?当用户输入空字符串时,我正在尝试设置一个值

我有我的MainActivity,它调用我的设置活动:

“device_name”是一个没有默认值或值的 EditTextPreference。

我的SettingsActivity扩展了 PreferenceActivity


onPostCreate我打电话bindPreferenceSummaryToValue(findPreference("device_name"));


侦听器的主要焦点是设置首选项摘要,对于 editTextPreference 我要检查值是 null 还是空并将其替换为Build.MODEL.


当我从MainActivity获取设置时,我使用以下代码:


  1. 当我第一次启动应用程序时,android_id按预期返回“UNKNOWN_DEVICE”。

  2. 打开/关闭SettingsActivity后,android_id按预期返回“XT1060_1”。

  3. 如果我单击以编辑设置"device_name",它也会按预期在文本字段中填充 "XT1060_1" 。


问题:当我将设置“device_name”编辑为空字符串,然后在我的设备上单击“确定”时,“设备名称”的摘要按预期显示“XT1060_2”,日志显示:

(所以getText()在setText()之后直接在SettingsActivity中工作得很好)

但是当我重新打开"device_name"的设置时,文本字段仍然是空的。

同样,一旦我关闭SettingsActivity并尝试从MainActivity获取设置,android_id也会返回一个空字符串。

一旦我再次重新打开SettingsActivity,它就可以工作(就像上面的第 2 点一样)。

0 投票
1 回答
2178 浏览

android - 应用程序设置中的“清除数据”有什么作用?

我在应用程序设置页面的屏幕截图下方添加了。我想知道清除数据强制停止对我的应用程序有什么影响?

具体来说,如果我的应用程序已将数据存储到文件中(我正在制作游戏并且我想存储进度)并且用户按下其中任何一个按钮,尤其是clear data,我想知道我的文件是否会被删除并且用户在游戏中的所有进度都会丢失。

如果我将文件存储在内部存储中,会发生这种情况吗?如果是这样,我应该使用外部存储吗?那么SharedPreferences呢?

截屏

0 投票
2 回答
937 浏览

java - 共享首选项保存和检索数据

我正在使用共享首选项来保存来自 AutoCompleteTextView 的数据。当用户在这个AutoCompleteTextView中写东西时,他可以点击一个按钮来保存他刚刚写的东西(这样他就不必每次都写了)。

这是我的代码的样子:

问题是,共享首选项根本不会在频道中保存任何数据。即使我关闭应用程序并重新启动它。任何线索或想法如何解决这个问题?

0 投票
1 回答
160 浏览

java - 为什么我的应用程序“不幸的是,abc 已停止”

编辑开始

很抱歉弄乱了我的代码。你们都指出了各种错误,你们都是正确的。但真正发生的是我的原始代码在一定程度上是正确的。在这里发布代码之前,我更改了我的原始代码以检查某些内容,我在这里使用了编辑过的代码,忘记了我改变了,这就是你看到一些错误的文本视图、大写等的原因。为此道歉。

我检查了我的代码,用按钮所在的同一活动上的文本视图替换了位于其他活动上的文本视图,并且工作正常。所以我猜我的 Intent to start another activity 导致了错误。这是我第一次尝试使用 Intent。我用的是

但这似乎行不通。简而言之,我有三个活动 activity1 包含 editText1 editText2 和一个保存按钮。当保存按钮单击来自使用 sharedPreferences 存储的 edtiText1 和 editText2 的数据时。activity2 包含一个名为 show 的按钮。单击按钮显示时,应打开活动3,并在其上保存值。

我希望我没有让它变得更复杂。

编辑结束。


旧帖

有人可以帮我找出我做错了什么。我只是 Java 和 Android 编程世界的新手。我只是想制作一个示例应用程序,我将在其中使用 SharedPreferences 保存和检索数据。保存部分工作正常,我还为保存举杯。但是当我单击按钮以检索数据时,应用程序崩溃了。请帮帮我。在保存时,我使用 Name 和 Age 作为键。

以下是我用于检索数据的 java 代码:

以下是xml代码

0 投票
2 回答
362 浏览

android - 尝试在 SharedPreferences、Android 中存储大数据时出现 OutOfMemoryError

问题:我想将巨大的对象映射(1000 个联系人)存储到 SharedPreferences 中。

我有 Cordova 应用程序,其中第一次加载所有联系人并将所有照片转换为 base64 字符串。

通常,此过程可能需要大约 30 秒。出于这个原因,我的目标是将所有联系人作为字符串存储到 SharedPreferences 以便快速加载。

我使用 GSON 库,但无论我做什么,我都会得到:

这是我将 Map 转换为ByteArrayOutputStream但在最后一行获得异常的方法:out.toString()


有没有其他方法可以将 Map 存储在 SharedPreferences 中,或者我可以以某种方式存储OutputStream

0 投票
2 回答
129 浏览

android - Android 第一次使用变量

我需要在初始化时为其关联的持久存储数据(如果存在)设置一些值。如果没有,我需要初始化它们。在第一次运行时使用 SharedPreference 初始化变量是否有任何缺点。也就是说,像这样:

如果从处理层面上没有劣势,那么就这种情况而言,是否有标准做法?此外,是否有任何替代方法来处理持久数据,或者我们是否必须为此使用 SharedPreferences?

0 投票
2 回答
253 浏览

android - 数据持久化安卓

我正在开发一个类似于 instagram 的社交照片应用程序,我需要提高应用程序性能,为此我需要保留一些数据,例如时间线提要、照片、消息等。我已经在使用共享首选项来保存用户信息。

我不知道哪种是保存数据的最佳方式,我在 SQLite 或文件之间,以保存 json 数据或其他东西。

哪个更快,给我的麻烦更少?

如果有人可以帮助我,我将不胜感激。