PreferenceActivity使用

刚刚学习了androidpreferenceActivity的使用,下面贴出自己的程序代码片段,希望对大家有用。呵呵,也是刚刚开始研究每多久,希望能和大家多多交流。

android通过配置文件自动生成PreferenceActivity界面

res文件夹下创建xml/setting_preferences.xml文件,然后创建类继承PreferenceActivity就可以了

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen

  xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="@string/inner_picture">

       <ListPreference android:key="listpreference_picsize"

                     android:title="@string/inner_picture"

                     android:summary="@string/inner_picture_summary"

                     android:entries="@array/pic_size_list"

                     android:entryValues="@array/pic_sizevalue_list"

                     android:dialogTitle="@string/dialog_title"/>

                           

    </PreferenceCategory>

    <PreferenceCategory android:title="@string/channel_change">

       <PreferenceScreen android:title="@string/select_change"

                     android:summary="热门频道为:即时新闻  要闻  国际"

                     android:key="change_channel">

       </PreferenceScreen>

    </PreferenceCategory>

    <PreferenceCategory android:title="@string/font_size"> 

       <ListPreference android:key="listpreference_fontsize"

                     android:title="@string/font_size"

                     android:summary="@string/font_size_summary"

                     android:entries="@array/font_size_list"

                     android:entryValues="@array/font_sizevalue_list"

                     android:dialogTitle="@string/dialog_title"/>

    </PreferenceCategory>

   

    <PreferenceCategory android:title="@string/user_message" >

       <PreferenceScreen android:title="錄入用戶個人資料">

       <EditTextPreference  android:key="edittext_preference_name"

                         android:summary="請輸入您的姓名"

                         android:dialogTitle="@string/dialog_input_title"></EditTextPreference>

       <EditTextPreference  android:key="edittext_preference_email"

                         android:summary="請輸入您的郵件地址"

                         android:dialogTitle="@string/dialog_input_title"></EditTextPreference>

       <EditTextPreference  android:key="edittext_preference_phone"

                         android:summary="請輸入您的電話號碼"

                         android:dialogTitle="@string/dialog_input_title"></EditTextPreference>                        

             

       </PreferenceScreen>

           </PreferenceCategory>

</PreferenceScreen>

 

类的实现

public class SettingPreferenceActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {

 

    private static final String KEY_FOR_CHANNEL_CHANGE_PREFERENCE="change_channel";

   

   

   

    @Override

    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,

           Preference preference) {

   

        if(preference.getKey()!=null&&preference.getKey().equals(KEY_FOR_CHANNEL_CHANGE_PREFERENCE)){

           Intent intent = new Intent(this,ChannelSelectActivity.class);

           startActivity(intent);//点击PreferenceScreen 跳转至其它Activity

      

       }

       return super.onPreferenceTreeClick(preferenceScreen, preference);

    }

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       // TODO Auto-generated method stub

       super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.seting_preferences);

 

//     requestWindowFeature(Window.FEATURE_NO_TITLE);

 

    }

}

preference有不同的格式,如EditTextPreferenceListPreferenceCheckBoxPreference等类型

当选择或是输入不同的值时,他们的值会自动保存到sharedpreferences中,当值发生改变的时候会触发

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,

           String key) {

}

 

可以通过各个preferencekey来得到对象,从而得到所选中的值

ListPreference  listPreferencePicsizes=(ListPreference)findPreference("listpreference_picsize");//內嵌圖片大小設置

 listPreferencePicsizes.setSummary("当前图片大小为:"+getText(listPreferencePicsizes));

   

 

String getText(Preference p)

    {

       String value;

       try

       {

           if (p instanceof ListPreference)

           {

              value = ((ListPreference) p).getValue();

              CharSequence[] entries =  ((ListPreference) p).getEntries();

              CharSequence[] entryValues =  ((ListPreference) p).getEntryValues();

              for (int i = 0;i<entryValues.length;i++)

              {

                  if  (value.equals( (String)entryValues[i]))

                     return (String)entries[i];

                    

              }

           }

           else if (p instanceof EditTextPreference)

           {

              return ((EditTextPreference) p).getText();

           }

       }

       catch(Exception e)

       {

           return "";

       }

      

       return "";

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值