`

使用PreferenceFragment快速实现app设置页面

阅读更多

现在的app基本都会有一些设置界面,有些数据需要保存到服务器,而有些数据只需保存到本地,对于保存到本地的操作,相信大家一般都会使用SharedPreference实现,然后自己动手写一个设置页面,大概花了半天时间弄完了,感觉自己萌萌哒。殊不知,还有一种更为简单的方法,就是PreferenceFragment,连界面布局都不用自己写,就能实现类似于android设置界面那样的效果,关键是,省时间,我刚刚大概测试了一下,从创工程到实现效果用了不到20分钟!!!而且最大的好处是,完全符合谷歌官方推出的Material Design,整体性上非常的统一和谐。先来看看效果。





 
 

一、创建一个xml资源文件,如setting.xml

 

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="分类一">
        <SwitchPreference
            android:icon="@drawable/ic_settings_24dp"
            android:key="wifi"
            android:summaryOff="禁用"
            android:summaryOn="启用"
            android:title="WIFI" />
		<CheckBoxPreference
            android:icon="@drawable/ic_settings_24dp"
            android:key="wifi2"
            android:summaryOff="禁用"
            android:summaryOn="启用"
            android:title="WIFI2" />
    </PreferenceCategory>
    <PreferenceCategory android:title="分类二">
        <ListPreference
            android:title="数据更新频率"
            android:key="update_rate"
            android:entries="@array/update_rate"
            android:entryValues="@array/update_rate_value"
            android:summary="默认" />
		<MultiSelectListPreference
            android:title="数据更新频率(多选)"
            android:key="update_rate_muti"
            android:entries="@array/update_rate"
            android:entryValues="@array/update_rate_value"
            android:summary="默认"/>
    </PreferenceCategory>
    <PreferenceCategory android:title="分类三">
        <EditTextPreference
            android:dependency="wifi"
            android:key="wifi_name"
            android:summary="默认值"
            android:title="WIFI Name" />
        <!-- 做简单显示,可以不指定key -->
        <Preference
            android:title="关于"
            android:summary="XXX 工作室" />
        <Preference
            android:title="版本号"
            android:summary="1.0"
            android:enabled="false"
            android:selectable="false"/>
    </PreferenceCategory>
	<PreferenceCategory android:title="分类四">
        <PreferenceScreen
            android:summary="单位、数据源、其他设置......"
            android:title="更多设置">
            <SwitchPreference
                android:title="其他设置"
                android:summary="" />
            <CheckBoxPreference
                android:title="选项"
                android:summary="" />
        </PreferenceScreen>
    </PreferenceCategory>
</PreferenceScreen>

 注意:分类二中的entries需要在strings.xml中定义数组

如下:

 

<string-array name="update_rate">
       <item>一小时</item>
       <item>三小时</item>
       <item>六小时</item>
       <item>半天</item>
       <item>一天</item>
</string-array>
<string-array name="update_rate_value">
       <item>1</item>
       <item>3</item>
       <item>6</item>
       <item>12</item>
       <item>24</item>
</string-array>

 

 

二、创建设置的活动,注意不要使用是支持包的碎片

 

package cn.bill56.preferencesetting;

import android.preference.PreferenceFragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 不要设置setcontentview
        if (savedInstanceState == null) {
            SettingFragment settingFragment = new SettingFragment();
            getFragmentManager().beginTransaction()
                    .add(android.R.id.content,settingFragment)
                    .commit();
        }
    }

    public static class SettingFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 加载xml资源文件
            addPreferencesFromResource(R.xml.setting);
        }
    }

}

 

 

 三、运行程序,便可看到效果图所示的效果

选择一些设置后,我们可以查看应用程序内部,看看是否真的保存了数据

打开DBMS,可以看到在程序内部有一个shared_prefs文件夹,展开可以看到保存的选项存储的文件,导入电脑后,打开文件,可看到如下内容(根据自己的操作不同保存的内容肯定不一致):



 

 

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="wifi_name">111</string>
    <boolean name="wifi2" value="true" />
    <set name="update_rate_muti">
        <string>1</string>
        <string>6</string>
        <string>3</string>
    </set>
    <boolean name="wifi" value="true" />
</map>

 

 

这么简单的几行代码就能实现这么负责的功能,看来外面的世界不小,一定要多去看看啊。


 

  • 大小: 19.8 KB
  • 大小: 20 KB
  • 大小: 20.7 KB
  • 大小: 16.3 KB
  • 大小: 12.9 KB
分享到:
评论

相关推荐

    PreferenceFragment偏好设置Demo

    PreferenceFragment偏好设置的Demo,它会自动保存用户数据,上次修改后下一次自动生效,不需要重新配置。用它来做app的设置界面或者保存...在Android3.0或更高的版本上,可以使用PreferenceFragment类去实现这个功能。

    基于App inventor的安卓版天气服务APP开发.pdf

    使用App Inventor平台,可以快速实现APP的功能和逻辑结构,不需要掌握复杂的编程知识。 六、APP测试 APP测试是天气服务APP开发的最后一步,需要测试APP的功能和性能。使用App Inventor平台,可以快速测试APP的功能...

    ios app引导界面实现

    本篇文章将详细探讨如何在iOS平台上实现一个App的引导界面。 首先,我们需要理解引导界面的基本类型。引导界面主要有两种:静态图片引导和动态交互引导。静态图片引导通常是一组精心设计的图片,顺序展示在启动过程...

    手机APP交互界面人因适合性测试程序的设计与实现.pdf

    通过使用Matlab GUIDE,开发人员可以快速设计和实现一个检测APP交互界面人因适合性的测试程序。 知识点4: 人因数据库的建立和应用 人因数据库是指存储用户在与APP交互时产生的心理和生理反映的数据库。该数据库...

    uni-app登录实例的实现

    【uni-app登录实例的实现】 在移动应用开发领域,uni-app是一个备受青睐的跨平台框架,它允许开发者用一套代码实现多端部署,包括iOS、Android、Web等。本实例将详细讲解如何使用HBuilderX工具来开发一个uni-app...

    uni-app快速入门源码 uni-app开发经典源码项目 uni-app可快速实现对接进销存

    uni-app快速入门源码 uni-app开发经典源码项目 uni-app可快速实现对接企业进销存、OA、ERP系统 uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、...

    使用ViewPage实现APP界面伐屏切换代码示例源码

    使用ViewPage实现APP界面伐屏切换代码示例源码,Android studio源码,eclipse打开无效

    APP下载页面HTML模板

    【APP下载页面HTML模板】是一种用于构建移动应用下载页面的网页设计模板,它为开发者或网站设计师提供了一个快速创建吸引用户下载APP的平台。这样的模板通常包含精心设计的布局、色彩搭配、字体样式以及交互元素,以...

    Crestron App设置指引 - v1.3.1.pdf

    本文档是关于Crestron App的设置指引,涵盖了传统界面与3系列(SmartGraphics)界面的区别、软件购买方法、软件配置、设备添加、连接上传界面以及问题快速检索等内容。 一、传统界面与3系列界面的区别 传统界面和3...

    手机app下载页面模板

    为了吸引用户下载并使用App,一个设计精美、功能清晰的下载页面至关重要。"手机App下载页面模板"就是为了满足这一需求而出现的设计资源。它是一种预先设计好的网页结构,可以帮助开发者或设计师快速创建出专业的、...

    主流APP界面迅速搭建

    "主流APP界面迅速搭建"这个项目旨在通过纯代码的方式,快速有效地创建与主流应用相媲美的用户界面。在这个过程中,开发者需要熟悉各种界面元素、布局管理、响应式设计以及性能优化等核心知识点。 首先,我们需要...

    MATLAB APP Design 界面窗口化设计

    MATLAB APP Design 是一套有关MATLAB APP窗口化设计的教程,...实例五:MATLAB APP design-APP登录界面的设计 实例六:MATLAB APP design- 凸透镜成像光学研究小工具 实例七:MATLAB APP design- 灰色预测-G(1,1)

    HBuilder实现App资源在线升级更新

    本文只要介绍HBuilder实现App资源在线升级更新。 梳理思路: 1.获取线上App版本号和当前App版本号 2.比对版本号,判断是否资源在线升级更新 3.是否下载最新安装包[可以静默下载或用户触发] 4.是否执行资源在线升级...

    使用手机APP实现FTU人机交互界面设计.pdf

    使用手机APP实现FTU人机交互界面设计 本文旨在介绍使用手机APP实现FTU人机交互界面设计的技术方案。在这个项目中,我们设计了一种基于蓝牙技术的智能手机APP解决方案,用于实现FTU的无线人机交互功能。该解决方案...

    手机APP注册页面html模板是一款采用css3制作的手机APP注册页面设计html模板。.rar

    这些元素的样式和交互可以通过CSS3进行定制,比如使用伪类`:hover`、`:focus`来改变鼠标悬停或元素获取焦点时的样式,使用`input[type="text"]`等选择器来特定地设置输入框的样式。此外,表单验证也可以通过CSS3配合...

    html源码_APP分发下载页面一共三个页面

    提供了三种类型的app分发页面,这可能意味着每个页面都有独特的设计和功能,如针对Android、iOS或其他平台的特定下载流程,或者针对不同用户群体的定制化界面。 在前端开发中,HTML源码是构建网页内容和结构的关键...

    Android studio 使用自带DownloadManager实现更新app

    本文将深入探讨如何利用`DownloadManager`来创建一个简单的、可靠的文件下载系统,以实现app的自动更新。 首先,我们需要了解`DownloadManager`的基本用法。`DownloadManager`是一个系统服务,可以处理长时间运行的...

    MATLAB APP design-APP登录界面的设计

    在账号和密码提示框中输入相关信息,当输入的账号和密码正确时,点击登录按钮后,登录界面会跳转到工作界面,如果输入的账号和密码错误,则会提示账号和密码错误的信息...跳转界面可以通过修改程序中的Run函数来实现。

    Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计).zip

    介绍做的一个天气预报demo,界面美观,实现了自动获取当前位置天气信息、根据天气更换背景图、更换城市、热门城市列表、记住设置的地址等功能。软件架构使用了android开发。城市管理界面:在这里可以对添加的城市...

    安卓系统原生设置APP

    1. **系统设置界面**:安卓原生设置APP提供了用户与设备交互的界面,包括网络连接、屏幕显示、声音、安全、应用程序管理等多个模块。用户可以在这里调整设备的各种参数,如更改壁纸、设置锁屏密码、调整亮度等。 2....

Global site tag (gtag.js) - Google Analytics