zoukankan      html  css  js  c++  java
  • PreferenceFragment 使用 小结

           Perference也就是我们常说的偏好设置,首选项设置,能够自己主动保存一些数据,比如我们在上一次使用的时候的一些内容,则在下一次启动后依旧生效,而不须要再进行配置。当用户改变设置时,系统就会更新SharedPreference文件里相应的值。perference使用键值对的方式来处理,在android3.0之前,我们一般去继承Preference这个基类,去给用户呈现一个能够设置的界面,当中的layout须要自己编写,而在3.0之后,使用的是碎片技术的首选项配置方法,即 使用PreferenceFragement来实现。

    +++++++++++++++++++++++++++++++++++=

    为了从一个XML文件里获取界面,使用addPreferenceFromResource(int)方法。根元素应该使用PreferenceScreen在层次结构中随后的PreferenceScreen将导致屏幕切割处。

     

    为了指定一个意图来查询都带有各自首选项的activitiy,使用addPreferenceFromIntent方法。每一个activity能够在manifest文件里指定meta-data来指向一个XML文件资源。这些资源文件将被填充到单独的首选项层次结构而且通过这个fragment来展示。

     

    为了指定一个以PreferenceScreen为根元素的对象,使用setPreferenceScreen(PreferenceScreen)方法。

    +++++++++++++++++++++++

    方便起见,这个fragment实现了一个用于当前层次结构中随意首选项的点击事件监听器,

    onPreferenceTreeClick(PreferenceScreen,Preference).


    ----------------------------------------------------------------------------------------------------------------------------------------

        使用PreferenceFragment 的一个样例,效果与之前使用继承PreferenceActivity差点儿相同,过程例如以下:

    1.创建一个project,在MainAcitivity中 加入菜单button 及 相应效果

    ------------------------------  cut here  -----------------------------------

        package com.example.fragementexam;  
          
        import android.os.Bundle;  
        import android.view.Menu;  
        import android.view.MenuItem;  
        import android.app.Activity;  
        import android.content.Intent;  
          
        public class MainActivity extends Activity {  
              
            private static final int menu_setting = 1;  
          
            @Override  
            protected void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                setContentView(R.layout.main);  
            }  
              
            @Override  
            public boolean onCreateOptionsMenu(Menu menu) {  
                // TODO Auto-generated method stub  
                menu.add(0,menu_setting,1,"设置").setIcon(android.R.drawable.ic_menu_preferences);  
                return super.onCreateOptionsMenu(menu);  
            }  
              
            @Override  
            public boolean onOptionsItemSelected(MenuItem item) {  
                // TODO Auto-generated method stub  
                super.onOptionsItemSelected(item);  
                Intent intent = new Intent(this, FragmentPreferences.class);  
                startActivity(intent);  
                return false;  
            }  
          
        } 
     ------------------------------  cut here  -----------------------------------

    2.在res目录以下新建一个xml目录,在里面新建一个preferences.xml文件

    ------------------------------  cut here  -----------------------------------
        <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >  
          
            <PreferenceCategory android:title="In-line preferences" >  
                <CheckBoxPreference  
                    android:key="checkbox_preference"  
                    android:summary="这是一个复选框"  
                    android:title="复选框设置" />  
            </PreferenceCategory>  
            
            <PreferenceCategory android:title="Dialog-based preferences" >  
                <EditTextPreference  
                    android:dialogTitle="请输入你最喜欢的种族"  
                    android:key="edittext_preference"  
                    android:summary="一个使用了编辑文本对话框的样例"  
                    android:title="请输入你最喜欢的种族" />  
          
                <ListPreference  
                    android:dialogTitle="请选择一项"  
                    android:entries="@array/cities"  
                    android:entryValues="@array/airport_codes"  
                    android:key="list_preferenc"  
                    android:summary="一个使用了列表对话框的样例"  
                    android:title="请选择一项" />  
            </PreferenceCategory>  
            
            <PreferenceCategory android:title="Launch preferences" >   
                <!-- This PreferenceScreen tag serves as a screen break (similar to page break in word processing). Like for other preference types, we assign a key here so it is able to save and restore its instance state. -->  
                <PreferenceScreen  
                    android:key="screen_preference"  
                    android:summary="展示还有一个首选项配置页面"  
                    android:title="页面首选项" >   
                    <!-- 你能够在这里放置很多其它的首选项内容,将被在下一个页面呈现出来 -->  
                    <CheckBoxPreference  
                        android:key="next_screen_checkbox_preference"  
                        android:summary="在还有一个页面展示但出于同一个层级的首选项配置"  
                        android:title="复选框设置" />  
                </PreferenceScreen>  
                <PreferenceScreen  
                    android:summary="从一个意图中启动一个activity"  
                    android:title="意图首选项" >  
                    <intent  
                        android:action="android.intent.action.VIEW"  
                        android:data="http://www.baidu.com" />  
                </PreferenceScreen>  
            </PreferenceCategory>  
            
            <PreferenceCategory android:title="Preference attributes" >  
                <CheckBoxPreference  
                    android:key="parent_checkbox_preference"  
                    android:summary="这是一个可见的父类"  
                    android:title="父类复选框首选项" />  
                <!-- 子类的可见类型是由样式属性定义的 -->  
                <CheckBoxPreference  
                    android:dependency="parent_checkbox_preference"  
                    android:key="child_checkbox_preference"  
                    android:layout="?android:attr/preferenceLayoutChild"  
                    android:summary="这是一个可见的子类"  
                    android:title="子类复选框首选项" />  
            </PreferenceCategory>  
          
        </PreferenceScreen>  

     

     ------------------------------  cut here  -----------------------------------

    3、FragmentPreferences.java的代码部分

     ------------------------------  cut here  -----------------------------------

        package com.example.fragementexam;  
          
        import android.app.Activity;  
        import android.os.Bundle;  
        import android.preference.PreferenceFragment;  
          
        public class FragmentPreferences extends Activity {  
            @Override  
            protected void onCreate(Bundle savedInstanceState) {  
                // TODO Auto-generated method stub  
                super.onCreate(savedInstanceState);  
                getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragement()).commit();  
            }  
              
              
            public static class PrefsFragement extends PreferenceFragment{  
                @Override  
                public void onCreate(Bundle savedInstanceState) {  
                    // TODO Auto-generated method stub  
                    super.onCreate(savedInstanceState);  
                    addPreferencesFromResource(R.xml.preferences);  
                }  
            }  
        }  
     ------------------------------  cut here  -----------------------------------


    大致对PreferenceFragment的学习使用就是这样,以后在高版本号上面开发的时候能够考虑这样的方式





  • 相关阅读:
    iot 表索引dump《2》
    heap表和iot表排序规则不同
    Cannot complete the install because one or more required items could not be found.
    iot表输出按主键列排序,heap表不是
    iot 表主键存放所有数据,且按数据插入顺序排序
    iot表和heap表排序规则不同
    org.eclipse.graphiti.ui.editor.DiagramEditorInput.
    Oracle 排序规则
    perl 异步超时 打印错误
    14.6.3 Grouping DML Operations with Transactions 组DML操作
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4275945.html
Copyright © 2011-2022 走看看