草庐IT

android - SharedPreferences 不会在 PreferenceActivity 中保存/加载

coder 2023-11-18 原文

编辑: 下面描述的问题是由于一个非常特殊的设备问题引起的,而不是由任何与编码相关的问题引起的。

我有一个 preferenceActivity,其中有很多 checkBoxPreferences。 checkBoxPreference 假设保存默认的共享首选项文件,然后在我打开应用程序时再次调用以更新 UI。

这并没有像预期的那样发生。 如果我关闭应用程序并重新打开它,我的值将保持原样,但如果我使用任务管理器结束应用程序,或者如果我重启手机(当应用程序未运行时),则会调用 defaultValues再次。

因此,我在我的 onResume() 中创建了一个 SharedPreference 来测试它。

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

然后我检查该共享首选项中是否有 key 。

pref.contains("myCheckBoxPreference");

当我关闭并重新打开它时,它返回 true。如果我用任务管理器关闭或关闭并重新打开手机,则返回 false。

所以,我尝试手动设置 SharedPreference

SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("myCheckBoxPreference", myCheckBoxPreference.isChecked());
editor.commit();

然后我在 checkboxpreference 值更改时调用它。我还尝试在 onStop 和 onPause 中调用它。不过,如果我关闭应用程序并重新打开它,pref.contains 会返回 true,但如果我关闭并重新打开手机,它会返回 false。

然后我尝试使用 SharedPreferences 文件。

在类声明中:

public static final String PREFS = "prefs";

在 onResume() 中:

SharedPreferences pref = this.getSharedPreferences(PREFS, 0);

相同的行为,如果我只是关闭应用程序并重新打开它,pref.contains 仍会返回 true,但如果我关闭手机电源然后重新打开,它会返回 false。

然后我尝试将 myCheckBoxPreference 的键值更改为与 CheckBoxPreference 的 xml 键不匹配的值,它仍然具有相同的效果。

然后我 Handlebars 机卸载了,然后关机重启,再重新安装,还是一样的效果。

最佳答案

我刚刚解决了它,我很确定。我没有代码错误,我的应用程序也没有任何问题(无论如何我不相信。)

我创建了一个名为“testproj”的新项目,然后从我的设置 PreferenceActivity 中复制了所有代码,将其粘贴到 TestprojActivity 中,然后从它所依赖的 xml 中复制代码,然后将其粘贴到 main.xml 中测试项目。

然后我在 Samsung Captivate 上安装了 TestProj,更改了周围的设置,通过 RAM 管理清除了 ram(我拥有的自定义 ROM 的一项功能),然后设置卡住了。然后我重新启动手机,设置仍然存在,就像我配置它们一样。

当我使用以下方法手动设置它们时,它们都保持不变:

PreferenceManager.getDefaultSharedPreferences();

无需手动将它们保存到 SharedPreferences。

因为这不是我的手机,我还没有尝试过,但我认为恢复出厂设置会完全修复它 编辑:我能够在新的 Samsung Captivate 和 Samsung infuse 上进行测试,并且有效。

我浪费了很多时间试图解决这个问题,我希望它能帮助其他人。 :)

关于android - SharedPreferences 不会在 PreferenceActivity 中保存/加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500236/

有关android - SharedPreferences 不会在 PreferenceActivity 中保存/加载的更多相关文章

  1. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  2. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  5. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  6. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  7. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  8. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  9. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

  10. ruby-on-rails - 使用 gmaps4rails 动态加载谷歌地图标记 - 2

    如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail

随机推荐