关于prefrenceactivity和preferencefragment的作用

在使用Android手机的时候,尤其是在操作软件设置时,我们经常见到这样的界面:

这是怎么来实现的的呢?其实android已经提供了相应的类和方法,当进行简单数据存储时(比如:软件配置参数)android推荐使用Preferences,当然如果想提供操作界面的话就要用到PreferencesActivity。我这里先做个小例子对来简单说明一下使用方法,由于没做准备,可能讲的不系统,以后补上。

首先:新建一个android工程,在其res文件夹下新建一个xml文件夹,用来存储我们的PreferencesActivity需要展示的界面。

然后在xml文件夹下新建一个xml文件,名字随意去,这里我建的名字叫:setting.xml

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <PreferenceScreen  
  3.   xmlns:android="http://schemas.android.com/apk/res/android">  
  4.     <PreferenceCategory android:title="分组一">    
  5.       <Preference     
  6.        android:key="Already"     
  7.        android:title="本地"     
  8.        android:summary="管理本地"/>    
  9.    </PreferenceCategory>   
  10.       
  11.     <PreferenceCategory  
  12.     android:title="分组二">  
  13.     <ListPreference   
  14.     android:key="CellCount"  
  15.     android:title="行列数选择"  
  16.     android:defaultValue="3"  
  17.     android:entries="@array/settings_cell_count"  
  18.     android:entryValues="@array/settings_cell_values"  
  19.     />  
  20.     </PreferenceCategory>  
  21.       
  22.     <PreferenceCategory  
  23.         android:title="@string/settings_cat_drawer">  
  24.         <ListPreference  
  25.             android:key="CurrentDrawerSortOrder"  
  26.             android:title="@string/settings_drawer_sorting"   
  27.             android:defaultValue="1"  
  28.             android:entries="@array/settings_sorting_names"   
  29.             android:entryValues="@array/settings_sorting_values" />  
  30.               
  31.         <CheckBoxPreference   
  32.         android:title="CheckBox"   
  33.         android:summary="check!!!!!!!!!!"   
  34.         android:key="check"></CheckBoxPreference>  
  35.           
  36.         <EditTextPreference   
  37.         android:title="EditText"   
  38.         android:summary="edit!!!!!!!!!!"   
  39.         android:key="edit"></EditTextPreference>  
  40.     </PreferenceCategory>  
  41. </PreferenceScreen>  

当然titl之类的名字都可以采用"@string/settings_drawer_sorting"的方式引用我们自己定义的名字,这里为了简单直接写上去了(不推荐)。title是上面亮白的大字,summary是title下面的小字说明,字数不要太多啊,它的显示空间是固定的,多了也显示不出来。

里面填充的数据我就不写了,应该都会的吧,不会的可以自己百度一下android array的使用与定义吧。

 

那么,我们怎么把这个xml显示出来呢?

需要新建一个Activity继承PreferencesActivity,下面是具体代码:

[java]  view plain  copy
 print ?
  1. package com.preference.demo;  
  2.   
  3. import android.os.Bundle;  
  4. import android.preference.Preference;  
  5. import android.preference.PreferenceActivity;  
  6. import android.preference.PreferenceScreen;  
  7. import android.util.Log;  
  8.   
  9. public class PreferenceDemo extends PreferenceActivity{  
  10.     static final String MANAGER_LOCATION_THEME= "Already";//组件的key值,要对应啊  
  11.       
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         // TODO Auto-generated method stub  
  15.         super.onCreate(savedInstanceState);  
  16.         this.addPreferencesFromResource(R.xml.setting);//引入我们的xml  
  17.     }  
  18.   
  19.     @Override  
  20.     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,  
  21.             Preference preference) {  
  22.         // TODO Auto-generated method stub  
  23.                    String key=preference.getKey();//获取当前触发动作组件的key值  
  24.           
  25.         if(key.equals(MANAGER_LOCATION_THEME)){//根据key值不同进行自己的操作,这里只是拦取了一个做个示例  
  26.             Log.i("xml","already_exsting_theme");  
  27.       
  28.         }  
  29.          
  30.         return super.onPreferenceTreeClick(preferenceScreen, preference);  
  31.     }  
  32.   
  33. }  
  34. //我只是打印了一下log,结果如下图:  

运行效果图如下:

点击本地打印log,log截图:

我们还可以在需要的地方读取xml里的值,我会在后续的文章里说一下,如果等不及的可以自己百度一下Preferences的使用,我们自己写的xml实际上就是Preferences的使用,其数据的读取方式是一样的。

 

该文章写得过于仓促,内容很简陋,如果有什么错误或表达不当的地方请留言,一定改,拜谢各

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值