PreferenceActivity 的用法总结

PreferenceActivity 的用法总结第一步:定义Activity继承PreferenceActivity使用addPreferencesFromResource(R.xml.preferences);显示xml第二步:编写pre

大家好,又见面了,我是你们的朋友全栈君。

第一步:

定义Activity 继承 PreferenceActivity 

使用addPreferencesFromResource(R.xml.preferences); 显示 xml

第二步:

编写preferences xml文件保存再 res/xml目录下

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <CheckBoxPreference
        android:defaultValue="false"
        android:key="running_state"
        android:summary="@string/running_summary_stopped"      //摘要
        android:title="@string/running_label" />                 //标题

    <PreferenceCategory                             //分类、种类
        android:key="settings"
        android:title="@string/settings_label" >
        <EditTextPreference
            android:defaultValue="@string/username_default"
            android:key="username"
            android:title="@string/username_label" />       
        
        <PreferenceScreen                                //点击启动一个新的Preference 界面,如果配置intent节点,甚至可以启动浏览器打开web
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:title="@string/advancedsettings_label" >
            <EditTextPreference
                android:defaultValue="@string/portnumber_default"
                android:key="portNum"
                android:title="@string/portnumber_label" />
           <CheckBoxPreference
                android:defaultValue="@string/wakelock_default"
                android:key="stayAwake"
                android:title="@string/wakelock_label" />
        </PreferenceScreen>
        
    </PreferenceCategory>
    
    <PreferenceCategory
        android:key="extra_category"
        android:title="@string/extra_label" >
        <Preference
            android:key="help"
            android:title="@string/help_label" />        
    </PreferenceCategory>

</PreferenceScreen>

第三步:

再code 中添加监听和初始化

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);//==getSharedPreferences("packageName_preferences" ,MODE_PRIVATE);
        Resources resources = getResources();

        CheckBoxPreference running_state = (CheckBoxPreference) findPreference("running_state");//保存再shared_prefs文件夹下的xml文件中,其中key为键,value为值保存再map节点下。
        running_state.setChecked(FTPServerService.isRunning());
        running_state.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
        {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue)
            {
                if ((Boolean) newValue)
                {
                }                return true;
            }
        });

        EditTextPreference username_pref = (EditTextPreference) findPreference("username");
        username_pref.setSummary(settings.getString("username", resources.getString(R.string.username_default)));
        username_pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
        {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue)
            {
                String newUsername = (String) newValue;
                if (preference.getSummary().equals(newUsername))
                    return false;
                if (!newUsername.matches("[a-zA-Z0-9]+"))//采用正则表达式匹配用户名
                {
                    Toast.makeText(ServerPreferenceActivity.this, R.string.username_validation_error, Toast.LENGTH_LONG).show();
                    return false;
                }
                preference.setSummary(newUsername);
                stopServer();
                return true;
            }
        });
    
CheckBoxPreference acceptproxy_pref = (CheckBoxPreference) findPreference("allowNet"); acceptwifi_pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if ((Boolean) newValue == false) acceptproxy_pref.setChecked(true); stopServer(); return true; } });

       help = findPreference("help"); help.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { new AlertDialog.Builder(ServerPreferenceActivity.this).setTitle(R.string.help_dlg_title).setMessage(R.string.help_dlg_message) .setPositiveButton(getText(R.string.ok), null).show(); return true; } });
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155400.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • kali安装教程_kali是黑客必学吗

    kali安装教程_kali是黑客必学吗首先在vm里面新建虚拟机,直接选择典型,然后下一步。1122然后到了这一步,选择中间的安装程序光盘镜像文件,然后去文件里面找你自己下载的镜像,这时候可能系统会出现无法检测此光盘镜像中的操作系

    2022年8月1日
  • SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX

    SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX

    2020年11月9日
  • laravel 框架接入环信遇到的坑(-)

    laravel 框架接入环信遇到的坑(-)

    2021年11月9日
  • vue 双向绑定原理及依赖搜集的过程「建议收藏」

    vue 双向绑定原理及依赖搜集的过程「建议收藏」双向数据绑定机制:官方:vue是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发响应的监听回调。第一步:需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter,这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化第二步:compile解析模板令,将模板中的变量替换成数据.然后初始化渲染页面视图,并将每个令对

    2022年10月17日
  • 漂亮特殊字体可复制_特殊字体生成器 漂亮特殊字体可复制[通俗易懂]

    漂亮特殊字体可复制_特殊字体生成器 漂亮特殊字体可复制[通俗易懂]英文特殊字体在社交平台上用得越来越多,比如:……上面这些漂亮的英文用的都是特殊字体,这些文字特殊的效果十分引人注意。特殊字体生成器推荐一个英文特殊字体生成器—【有文字体】,有文字体是一个在线的特殊字体生成器,可以一键生成可复制的漂亮特殊字体。使用方法非常简单,只需输入文字,它会为你生成相应的特殊字体,比如输入”Haveaniceday”,你会立即看到生成的特殊字体,再点击…

    2022年4月28日
  • 用户地理位置的聚类算法实现—基于DBSCAN和Kmeans的混合算法

    用户地理位置的聚类算法实现—基于DBSCAN和Kmeans的混合算法用户地理位置的聚类算法实现—基于DBSCAN和Kmeans的混合算法用户地理位置的聚类算法实现基于DBSCAN和Kmeans的混合算法聚类算法简介1基于划分的Kmeans算法2基于密度的DBSCAN算法用户地理位置信息的的聚类实现1基于Kmeans的聚类实现2基于DBSCAN的聚类实现基于DBSCAN和Kmeans的混合算法实现1.聚类算法简介聚类的目标是使同一类对象

    2022年6月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号