刚刚学习了android中preferenceActivity的使用,下面贴出自己的程序代码片段,希望对大家有用。呵呵,也是刚刚开 始研究每多久,希望能和大家多多交流。
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有不同的格式,如EditTextPreference、ListPreference、 CheckBoxPreference等类型
当选择或是输入不同的值时,他们的值会自动保存到sharedpreferences中,当值发生改变的时候会触发
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
}
可以通过各个preference的key来得到对象,从而得到所选中的值
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 "";
}
ps:From.. http://elena-java.javaeye.com/blog/643449
mark here, leans later