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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows常用端口号,以及服务对应的端口号「建议收藏」

    windows常用端口号,以及服务对应的端口号「建议收藏」查看端口在windows2000/xp/server2003中要查看端口,可以使用netstat命令:依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。在命令提示符状态下键入“netstat-a-n”,按下回车键后就可以看到以数字形式显示的tcp和udp连接的端口号及状态。小知识:netstat命令用法命令格式:netstat-a-e…

    2022年9月3日
    3
  • vue 使用数组splice方法失效,且总是删除最后一项的解决办法。[通俗易懂]

    vue 使用数组splice方法失效,且总是删除最后一项的解决办法。[通俗易懂]今天在写项目的时候,遇到一个很简单的需求,下图,点击添加标签,左边出现一个可以输入的标签,点击删除按钮,就能删除当前标签,很简单的需求,我却搞了一个多小时(哎…新手愚笨啊)一看到这个我的思路就是点击添加标签,把新增的节点push到自己定义的数组里,然后渲染出来,点击删除按钮,用splice方法从数组中删除掉当前的节点(很简单,很明确的思路嘛,但是却事与愿违) <div…

    2022年9月24日
    0
  • Debian 使用VSFtpd安装配置架设FTP服务器「建议收藏」

    Debian 使用VSFtpd安装配置架设FTP服务器「建议收藏」Vsftpd的安装:aptitudeupdate//更新数据源列表aptitudeinstallvsftpd//安装vsftpdVsftpd的文件结构:/usr/sbin/vsftpd—-VSFTPD的主程序/etc/init.d/vsftpd—-启动脚本/etc/vsftpd.conf—-主配置文件/etc/pam…

    2022年7月21日
    9
  • Java程序生成linechart report的方法「建议收藏」

    Java程序生成linechart report的方法

    2022年2月5日
    51
  • 弹性网络回归模型_数据模型剪枝

    弹性网络回归模型_数据模型剪枝本文首发于PandaCV公众号。导语:模型剪枝算法核心在于找到“不重要”的参数并且实现裁剪。为寻找到较优的剪枝策略,我们往往需要尝试多种剪枝策略和剪枝策略性能评估。通常剪枝策略评估方法是将剪枝后的模型训练到收敛或者训练规定好数量epoch后进行性能比较。不管是人工调试剪枝策略还是自动搜索剪枝策略,都需要多次评估剪枝策略。剪枝策略的评估效率一定程度上影响了整体压缩效率。因此,本文提出了一种能够快速衡量剪枝后模型性能的方法,经实验能够对MobilenetV1减少50%的FLOPs情况下,仍能保证在Image

    2022年8月16日
    12
  • map集合根据value找key(一个key或多个key)

    map集合根据value找key(一个key或多个key)//根据value值获取到对应的一个key值publicstaticStringgetKey(HashMap&lt;String,String&gt;map,Stringvalue){Stringkey=null;//Map,HashMap并没有实现Iteratable接口.不能用于增强for循环.for(Str…

    2022年7月23日
    7

发表回复

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

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