Android添加设置选项

2017-01-14 10:03:00来源:http://www.jianshu.com/p/6c6d4557c423作者:魏俊an人点击

第七城市

Step1:添加xml文件,装载菜单选项


一般常用有EditTextPreference、CheckBoxPreference、ListPreference三种
注意键值要做成可引用的array类型资源,
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:defaultValue="@string/pref_location_defaultValue"
android:key="@string/pref_location_key"
android:title="@string/pref_location_title" />
<!--ListPreference几个属性说一下
entries:用户可见的选项,需要调用一个字符串数组,相当于键值名
entryValues:用户可见的选项相应的值,相当于键值-->
<ListPreference
android:title="@string/pref_units_title"
android:key="@string/pref_units_key"
android:defaultValue="@string/pref_units_defaultValue"
android:entries="@array/pref_units_options"
android:entryValues="@array/pref_units_values"
android:positiveButtonText="@null"
android:negativeButtonText="@null"
android:dialogIcon="@mipmap/ic_launcher"/>
</PreferenceScreen>

Step2:res/values/String.xml记得创建字符串数组
<!--温度单位选项-->
<string name="pref_units_title">units</string>
<string name="pref_units_key">unit</string>
<string name="pref_units_defaultValue">metric</string>
<string name="pref_units_imperial">imperial</string>
<!--温度单位选项标题-->
<string-array name="pref_units_options">
<item>Metric</item>
<item>Imperial</item>
</string-array>
<!--温度单位选项值-->
<string-array name="pref_units_values">
<item>@string/pref_units_defaultValue</item>
<item>@string/pref_units_imperial</item>
</string-array>

Step3:添加SettingsActivity
public class SettingsActivity extends PreferenceActivity
implements Preference.OnPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 调用装载有设置选项的菜单xml文件
addPreferencesFromResource(R.xml.preferences);
//绑定设置选项的key值
bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key)));
}
/*
* 自定义方法,设置监听器,查看设置中的选项是否有变更
* */
private void bindPreferenceSummaryToValue(Preference preference) {
//设置监听器,查看设置中的选项是否有变更
preference.setOnPreferenceChangeListener(this);
//有选项变更时立即将preference文件中的value进行相应的变更
onPreferenceChange(preference, PreferenceManager
.getDefaultSharedPreferences(preference.getContext())
.getString(preference.getKey(), ""));
}
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String stringValue = value.toString();
if (preference instanceof ListPreference) {
// For list preferences, look up the correct display value in
// the preference's 'entries' list (since they have separate labels/values).
ListPreference listPreference = (ListPreference) preference;
int prefIndex = listPreference.findIndexOfValue(stringValue);
if (prefIndex >= 0) {
preference.setSummary(listPreference.getEntries()[prefIndex]);
}
} else {
// For other preferences, set the summary to the value's simple string representation.
preference.setSummary(stringValue);
}
return true;
}
}


Step4:使用SharedPreferences对象进行访问
SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
weekTask.execute(mSharedPreferences.getString(
getString(R.string.pref_location_key),
getString(R.string.pref_location_defaultValue)));




第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台