Android PreferenceActivity可以自动设置的Activity

1、介绍

在这里插入图片描述
PreferenceActivity 是一个抽象类,继承自ListActivity ,该类封装了SharedPreferences.
PreferenceActivity 提供了一些常用的设置项如,与普通组件一样,这些配置项既可以从XML文件创建,也可以从代码创建.
每一个设置项标签有一个android:key属性,该属性的值就是保存在XML文件中的key-value对中的key.
当PreferenceActivity中的内容改变时,Android系统会自动进行保存和持久化维护,我们只需要在要用的设置界面中数据的地方进行读取就可以了.

2、代码

<PreferenceScreenxmlns:app="http://schemas.android.com/apk/res-auto"><SwitchPreferenceCompatapp:key="notifications"app:title="Enable message notifications"/><Preferenceapp:key="feedback"app:title="Send feedback"app:summary="Report technical issues or suggest new features"/></PreferenceScreen>
public class MySettingsFragment extends PreferenceFragmentCompat {@Overridepublic void onCreatePreferences(Bundle savedInstanceState, String rootKey) {setPreferencesFromResource(R.xml.preferences, rootKey);}
}
public class MySettingsActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getSupportFragmentManager().beginTransaction().replace(R.id.settings_container, new MySettingsFragment()).commit();}
}

示意图
在这里插入图片描述

3、监控偏好设置

SwitchPreferenceCompat notificationsPref = findPreference("notifications");if (notificationsPref != null) {notificationsPref.setOnPreferenceChangeListener((preference, newValue) -> {Log.d("Preferences", String.format("Notifications enabled: %s", newValue));return true; // Return true if the event is handled.});
}Preference feedbackPref = findPreference("feedback");if (feedbackPref != null) {feedbackPref.setOnPreferenceClickListener((preference) -> {Log.d("Preferences", "Feedback was clicked");return true; // Return true if the event is handled.});
}

4、读取当前的偏好设置值

var preferences = PreferenceManager.getDefaultSharedPreferences(context).getAll();preferences.forEach((key, value) ->{Log.d("Preferences", String.format("%s -> %s", key, value));
});

5、其他

  1. PreferenceActivity 类有一个addPreferencesFromResource() 方法,它用于将xml 资源显示到界面, 这里指的xml 就是 preference_setting.xml 写法
    对于PreferenceScreen 其中3个属性:key、title、summary, key类似于android:id, title 是屏幕的标题, summary 是屏幕用途的描述.
  2. 在PreferenceScreen 下可以存在 CheckBoxPreference、ListPreference 等首选项的子类,它们继承于android.preference.Preference 父类
    如图所示

在这里插入图片描述
以 ListPrefernce 为例,说明一些特性

特 性/说 明
______________________________________________________________________android:key /选项的名称或键
android:title /选项的标题
android:summary /选项的简短摘要
android:entries /列表项的文本
android:entryValues /列表项的值,上一个 文本相当于键
android:dialogTitle /对话框的标题, 在视图显示为对话框时使用
android:defaultValue /列表项中选项的默认值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FRP多级内网穿透实验(虚拟机多级网络环境搭建+FRP工具使用)

0x00 实验背景 最近在工作中遇到了一个指定必须使用FRP作为内网穿透工具的活动&#xff0c;由于以前没有深入分析过多层内网的实验环境&#xff0c;对多级级联转发还不是很熟悉&#xff0c;在这里简单记录一下环境搭建与实验内容。 0x01 环境搭建 环境搭建以VM为为虚拟平台&…

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版 Office LTSC 2024 for Mac 请访问原文链接&#xff1a;Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&a…

Spring Boot | Spring Boot 整合“ 邮件任务“ 实现

目录: Spring Boot 整合" 邮件任务" 实现 :一、发送 "纯文本邮件" :(1) 添加 "邮件服务" 依赖启动器(2) 添加 "邮件服务" 配置信息(3) 定制 "邮件发送服务"(4) "纯文本" 邮件发送 测试效果 二、发送 带 "附件…

Python实现WebSocket通讯与心跳控制详解

为了使用Python实现WebSocket通讯和心跳控制&#xff0c;我们通常需要一个WebSocket客户端库和一个服务器端库。这里&#xff0c;我们将使用websockets库作为服务器和客户端的示例。 安装必要的库 首先&#xff0c;你需要安装websockets库。可以使用pip进行安装&#xff1a; p…

Modbus TCP转CAN网关在不同行业中的应用以及其使用上的优势

倍讯科技Modbus TCP转CAN网关通常被用于工业自动化领域&#xff0c;特别是在需要连接现有Modbus TCP网络和CAN总线设备的场景中。以下是该网关在不同行业中的应用以及其使用上的优势&#xff1a; 1. 制造业&#xff1a; - 在制造业中&#xff0c;各种类型的设备和机器通常使用不…

PXE+Kickstart无人值守安装安装Centos7.9

文章目录 一、什么是PXE1、简介2、工作模式3、工作流程 二、什么是Kickstart1、简介2、触发方式 三、无人值守安装系统工作流程四、实验部署1、环境准备2、服务端&#xff1a;关闭防火墙和selinux3、添加一张仅主机的网卡4、配置仅主机的网卡4.1、修改网络连接名4.2、配IP地址4…

整合springboot-mybatis时,MySQL数据库无法连接问题

整合springboot-mybatis时&#xff0c;MySQL数据库无法连接问题 解决步骤 先手动停止MySQL服务&#xff0c;在cmd后的控制台输入services.msc 找到MySql停止服务 修改配置文件&#xff0c;跳过验证 修改MySQL安装目录下的my.ini配置文件&#xff0c;使登录时跳过权限检查&a…

业绩超预期外,海尔智家ESG实践再获认可

求增长&#xff0c;已成各行业面对的共同命题。 在家电赛道上&#xff0c;海尔智家的业绩表现不俗。2024一季度&#xff0c;海尔智家延续了年报稳健增长的趋势&#xff0c;继续在高基数下实现高增长&#xff0c;其利润增幅更是高达20.2&#xff05;&#xff0c;超预期。而今年…

【Web】CTFSHOW 月饼杯 题解(全)

目录 web1_此夜圆 web2_故人心 web3_莫负婵娟 web1_此夜圆 拿到源码&#xff0c;一眼字符串逃逸 本地测一测&#xff0c;成功弹出计算器 <?phpclass a {public $uname;public $password;public function __wakeup(){system(calc);} }function filter($string){retur…

Linux软件RAID:数据冗余与性能提升的完美融合

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、软件RAID的概念 2、软件RAID与硬件RAID的对比…

记录一下 log4j的漏洞

目录 背景 bug的产生 bug复现 JNDI 网络安全学习路线 &#xff08;2024最新整理&#xff09; 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明&#xff1a; 背景 log4j这次的bug&#xff0c;我相信大家都已经知道了&#xff0c;仅以…

密探渗透工具v1.08测试版

目录 前言 免责声明 工具开发者: 工具项目地址: 1.作者做工具的缘起 2.功能介绍 3.工具的更新日志 4.安装与使用 4.1 工具下载 4.2 在jdk8环境下运行: 4.3 运行界面 4.4 资产测绘功能(fofa,鹰图和Quake) 4.5 指纹识别功能 ​编辑 4.6 敏感信息与接口扫描 4.7 文…