重置首选项的默认值

2024-05-11

我正在使用 CheckBoxPreference 作为设置屏幕。 XML 是:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android" >
    <CheckBoxPreference android:key="includeAddress"
                    android:title="Include Address" 
                    android:summary=""
                    android:defaultValue="true" />
    <CheckBoxPreference android:key="rememberName"
                    android:title="Remeber Name" 
                    android:summary=""
                    android:defaultValue="false" />
</PreferenceScreen>

我在应用程序中更改这些值。用户注销后,必须将其设置为 xml 中定义的默认值。但是,它似乎不起作用。他们保留了我最后选择的那些价值观。

阅读 Android 文档后,我发现:

PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.preference_settings, true);

但它很难完成这项工作!尝试使用 SharedPreferences 的其他方式。

SharedPreferences preferences = getParent().getSharedPreferences("preference_settings", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();

也没有用!

我错过了什么吗?如何将首选项设置为 XML 中定义的默认值?

提前致谢!


共享首选项应该可以工作,但您应该使用默认的共享首选项。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();

为了使用文件名获取共享首选项,Android 创建此名称(可能基于项目的包名称?)。您可以通过将以下代码放入 SettingsActivity onCreate 中并查看preferencesName 来获取它。

String preferencesName = this.getPreferenceManager().getSharedPreferencesName();

该字符串应类似于“com.example.projectname_preferences”。在项目中的某个位置进行硬编码,并将其传递给 getSharedPreferences() ,然后您就可以开始了。

AS:

 PreferenceManager.getDefaultSharedPreferences(this);

将提供对整个应用程序包全局的首选项文件的访问;任何活动都可以访问首选项(在内部,保存首选项的 xml 文件将被命名为your.application.package_preferences.xml).

getParent().getSharedPreferences("preference_settings", MODE_PRIVATE);

仅为 contextInstance 类提供首选项:只有上下文类的实例才能访问这些首选项(表示您的包仍然是your.application.package你在your.application.package.SecondActivity,内部首选项文件是SecondActivity.xml).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重置首选项的默认值 的相关文章

  • Android 滚动分页

    Android 操作系统有可以实现滚动分页的功能吗 Edit滚动分页是指像主屏幕上一样的分页 您可以左右滑动并转到下一页或上一页 您可以在 android git kernel org 上查看 Launcher 的源代码作为示例 查找名为
  • 创建后如何更新使用 AlertDialog.builder 构建的 AlertDialog 列表中的项目数组

    我使用 AlertDialog builder 创建了一个对话框 显示可以检查的多项选择列表 我设置了初始的项目名称集及其检查状态 builder setMultiChoiceItems saveTargets names saveTarg
  • 我应该使用什么事件在 Firebase Analytics 上发送“按钮按下”事件

    我发现最合适的是选择内容 https firebase google com docs reference android com google firebase analytics FirebaseAnalytics Event html
  • 如何使用 ArrayAdapter

    ArrayList
  • 错误:java.lang.NoClassDefFoundError Android

    我正在关注这个创建滑动选项卡的教程 http www truiton com 2015 06 android tabs example fragments viewpager 但我收到上述错误 我的 gradle 依赖结构 dependen
  • OneSignal 推送通知 单击以打开活动

    我集成了一个用于推送通知的信号库 我想在应用程序未运行时通过单击推送通知来打开特定活动 我收到推送通知 但当我单击通知时 应用程序崩溃了 这是我的通知接收器代码 public class ExampleNotificationOpenedH
  • 仅允许使用 -Xjvm-default 选项从具有“@JvmDefault”成员的接口继承

    我在Android studio上更新了kotlin版本 ext kotlin version 1 6 10 不幸的是我收到构建错误 仅允许使用 Xjvm default 选项从具有 JvmDefault 成员的接口继承 我怎样才能解决这个
  • android 中 y + 高度必须 <= bitmap.height()

    我想从另一个创建位图 但每次尝试都会崩溃 这是错误消息 java lang IllegalArgumentException y 高度必须 这是我尝试创作的地方 public void saveBitmap Bitmap bitmapToS
  • 从当前位置出发的移动网络行车路线

    我正在构建一个网站的移动版本 试图通过一键式链接来启动 Google 地图 并提供从用户当前位置到企业的行车路线 我让它在 iPhone 上运行良好 但在 Android 上测试时 它会查看 Current 20Location 并尝试查找
  • 加载内容时在 ImageView 中使用“动画圆圈”

    我目前在我的应用程序中使用一个列表视图 可能需要一秒钟才能显示 我目前所做的是使用列表视图的 id android empty 属性来创建 正在加载 文本
  • 如何将 ThreeJS 与 PhoneGap 一起使用?

    这个探索是非常自我描述的 我已经用一个简单的 3D 立方体进行了测试 它在浏览器中运行良好 但只在模拟器中显示空白页面 有人说 Threejs 不能与 PhoneGap 一起使用 但也有人说他们使用过并且工作正常 在 Android 中 您
  • Firebase 云消息传递 - 目标到 Firebase 控制台中不可见的单个设备

    我正在尝试向 android 中的单个设备发送通知 但是当我从 Firebase 控制台执行此操作时 它在 Firebase 新视图中不可见 谁能帮助我从哪里向单个设备发送通知 仔细尝试以下步骤 Tap 新通知 Fill up 通知标题 可
  • 如何计算android中位图擦除区域的百分比?

    我是安卓新手 我正在制作一个可以使用手指擦除画布上的位图的应用程序 像手指画橡皮擦之类的东西 我想计算擦除区域的百分比 例如 60 已从完整图像中擦除 请帮助我做到这一点 提前致谢 我尝试了一些方法 它总是给我 0 它不起作用 请参阅该方法
  • 没有 GUI 的 Android Activity

    我创建了一个仅从链接启动的活动 使用意图过滤器 我不希望此活动有 GUI 我只希望它启动服务并在栏中放置通知 我尝试将链接的意图过滤器放入我的服务中 但这不起作用 有没有更好的方法可以响应意图过滤器 或者我可以让我的活动没有 GUI 吗 抱
  • 出现软键盘时布局未向上推

    I have designed layout by taking the reference from this https stackoverflow com questions 16411056 how to adjust layout
  • 在 Android 模拟器中获取互联网连接

    我有一台带有wifi连接的台式电脑 我的IP地址是192 168 12 95 网关是192 168 10 10 但是我在android模拟器中没有获得互联网连接 也就是说我无法访问internate 我也尝试过 emulator avd w
  • Android - 带动画的可扩展 TextView

    我有一个TextView首先显示长文本的一小部分 用户可以按 查看更多 按钮来展开TextView并查看该文本的其余部分 进行测试 我可以通过简单地交换以下值来实现这一点TextView setMaxLines介于 4 之间 用于折叠 和
  • 如何在Android 11中获取dir文件列表

    我想编写自己的精简版文件浏览器 文件 API 现在不适用于外部存储 该版本还提供了对范围存储的改进 这使得开发人员可以更轻松地迁移到使用此存储模型 我不明白如何使用范围存储来访问 sdcard 如果您正在寻找文件选择器体验 存储访问框架 h
  • 对于双核手机,availableProcessors() 返回 1

    我最近购买了一部 Moto Atrix 2 手机 当我尝试查看手机中的处理器规格时 Runtime getRuntime availableProcessors 返回 1 proc cpuinfo 也仅包含有关处理器 0 的信息 出于好奇
  • android 填充包含片段的布局

    问题是什么 我如何膨胀包含片段的布局 我不知道错误消息的含义 请帮我 谢谢 错误信息 09 01 18 44 58 698 E AndroidRuntime 20617 Caused by java lang IllegalArgument

随机推荐