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)
上一篇 2022年7月2日 上午8:36
下一篇 2022年7月2日 上午8:36


相关推荐

  • SOP是什么?SOP的作用是什么?如何编写SOP?

    SOP是什么?SOP的作用是什么?如何编写SOP?SOP是由StandardOperationProcedure这三个英文单词的首个字母组合而成。也就是以统一化的标准将操作流程的步骤和要求罗列出来,用于指导和规范日常工作。SOP的核心,就是把特定流程的关键问题细化及量化。SOP是以文件的方式归纳总结操作人员在实际生产过程中的具体操作步骤和应当要注意的事项,它是车间现场操作人员的作业指导模板,也是质量检验人员用于检测指导工作的依据。SOP的作用:1、把企业长期累积的经验技术记录归纳,汇总成简单易懂的标准化文件,即使出现操作人员变动也不会使已有的技

    2022年5月9日
    61
  • pycharm新建Python文件模板

    pycharm新建Python文件模板coding utf 8 Author USER File NAME py Time DATE Desc if name main pass

    2026年3月20日
    1
  • docker入门(利用docker部署web应用)[通俗易懂]

    docker入门(利用docker部署web应用)[通俗易懂]前言:本课程是在慕课网上学习第一个docker化的java应用课程时所做的笔记,供本人复习之用目录第一章什么是docker1.1docker的发展史1.2docker国内应用史1.3什么是Docker第二章了解docker2.1docker思想2.1.1集装箱2.1.2标准化2.1.3隔离2.2docker解决的问题2.2.1…

    2022年5月28日
    39
  • layoutparams方法_layoutinflater是什么

    layoutparams方法_layoutinflater是什么http://www.2cto.com/kf/201606/514962.html在上一篇文章里,我总结了一下自定义控件需要了解的基础知识:View的绘制流程——《自定义控件知识储备-View的绘制流程》。其中,在View的测量流程里,View的测量宽高是由父控件的MeasureSpec和View自身的LayoutParams共同决定的。MeasureSpec是什么,上一篇文章里已经说

    2026年2月6日
    6
  • 离散傅里叶变换-DFT(FFT基础)[通俗易懂]

    离散傅里叶变换-DFT(FFT基础)[通俗易懂]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文是从最基础的知识开始讲解,力求用最通俗易懂的文字将问题将的通俗易懂,大神勿喷,多多指教啊,虽然说是从零学习FFT,但是基本的数学知识还是要有的,sin,cos,等。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…

    2022年7月17日
    21
  • 求三角形面积——C语言

    求三角形面积——C语言C 语言 利用海伦公式求三角形面积代码如下 include stdio h include math h voidmain floata b c p doubleS printf 请输入三边长度 n scanf f f f amp a amp b amp c if a b gt c amp amp b c gt a amp amp a c gt b p a b c 2 S sq math h stdio h

    2026年3月19日
    2

发表回复

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

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