android preferenceActivity的用法
首先让大家看图 看到这张图是 不是很熟悉 我想大家应该会好奇他是怎么实现 咋一看是不是觉得实现起来有点困难 因为各个按钮之间会绑定牵连在一起
原来android内部提供更容易的实现他的方法
也就是preferenceActivity该类封装了sharedpreferences所以他的所有子类都具有保存key-value对的能力
比较常用的设置项 有三类:
1、checkboxpreferences
2、edittextpreferences
3、listviewpreferences
好了 直接看列子吧
分2步:
1、在res目录下建一个xml目录 并在该目录下新建一个preferences_setting.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="我的位置源" > <CheckBoxPreference android:key="wireless_network" android:summary="使用无线网络查看应用程序(例如Google地图)中的位置" android:title="使用无线网络" /> <CheckBoxPreference android:key="gps_satellite_setting" android:summary="定位时,精确到街道级别(取消选择可节约电量)" android:title="启用GPS卫星设置" /> </PreferenceCategory> <PreferenceCategory android:title="个人信息设置" > <CheckBoxPreference android:key="yesno_save_individual_info" android:title="是否保存个人信息" /> <EditTextPreference android:key="individual_name" android:summary="请输入真实姓名" android:title="姓名" /> <PreferenceScreen android:key="other_individual_msg" android:summary="是否工作、手机" android:title="其他个人信息" > <CheckBoxPreference android:key="is_an_employee" android:title="是否工作" /> <EditTextPreference android:key="mobile" android:summary="请输入真实的手机号" android:title="手机" /> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen>
2 、java文件:
package net.blogjava.mobile; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.preference.Preference.OnPreferenceChangeListener; public class Main extends PreferenceActivity implements OnPreferenceChangeListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesName("setting"); addPreferencesFromResource(R.xml.preference_setting); Preference individualNamePreference = findPreference("individual_name"); SharedPreferences sharedPreferences= individualNamePreference.getSharedPreferences(); individualNamePreference.setSummary(sharedPreferences.getString("individual_name", "")); if (sharedPreferences.getBoolean("yesno_save_individual_info", false)) individualNamePreference.setEnabled(true); else individualNamePreference.setEnabled(false); individualNamePreference.setOnPreferenceChangeListener(this); } public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary(String.valueOf(newValue)); return true; } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if ("yesno_save_individual_info".equals(preference.getKey())) { findPreference("individual_name").setEnabled( !findPreference("individual_name").isEnabled()); } return super.onPreferenceTreeClick(preferenceScreen, preference); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构