Android设置Settings实现:PreferenceActivity【1】
16lz
2021-12-04
Android设置Settings实现:PreferenceActivity【1】
Android的设置Settings功能比较常见,通常可以考虑使用PreferenceActivity实现。
PreferenceActivity需要从res/xml加载(addPreferencesFromResource)一个定义好的Preference的xml文件。比如preferences.xml:
[html] view plain copy- <?xmlversion="1.0"encoding="utf-8"?>
- <PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android">
- <PreferenceCategoryandroid:title="【第1组】">
- <ListPreference
- android:dialogTitle="listdialogtitle"
- android:entries="@array/citys"
- android:entryValues="@array/citys"
- android:key="list_key"
- android:summary="listsummary"
- android:title="listtitle"/>
- </PreferenceCategory>
- <PreferenceCategoryandroid:title="【第2组】">
- <EditTextPreference
- android:defaultValue="缺省值1"
- android:key="edit_text_key_1"
- android:summary="editsummary"
- android:title="edittext1"/>
- <CheckBoxPreference
- android:defaultValue="true"
- android:key="checkbox_key"
- android:summary="checkboxsummary"
- android:title="checkboxtitle"/>
- </PreferenceCategory>
- <!--点击将浏览和打开网页-->
- <Preference
- android:summary="http://blog.csdn.net/zhangphil"
- android:title="浏览网页">
- <intent
- android:action="android.intent.action.VIEW"
- android:data="http://blog.csdn.net/zhangphil"/>
- </Preference>
- <!--此处将跳转到下一屏设置-->
- <PreferenceScreen
- android:key="preference_screen_2_key"
- android:persistent="false"
- android:title="PreferenceScreen2">
- <EditTextPreference
- android:defaultValue="缺省值2"
- android:key="edit_text_key_2"
- android:summary="editsummary"
- android:title="edittext2"/>
- </PreferenceScreen>
- </PreferenceScreen>
其中需要的数组资源citys在res/values中的arrays.xml中定义好:
[html] view plain copy
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <string-arrayname="citys">
- <item>成都</item>
- <item>北京</item>
- <item>上海</item>
- </string-array>
- </resources>
上层Java代码:
[java] view plain copy
- packagezhangphil.settings;
- importandroid.content.SharedPreferences;
- importandroid.content.SharedPreferences.OnSharedPreferenceChangeListener;
- importandroid.os.Bundle;
- importandroid.preference.PreferenceActivity;
- importandroid.preference.PreferenceManager;
- importandroid.util.Log;
- importandroid.widget.Toast;
- publicclassMainActivityextendsPreferenceActivity{
- privateMyOnSharedPreferenceChangeListenermOnSharedPreferenceChangeListener=newMyOnSharedPreferenceChangeListener();
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- //通用的读取设置的某个值的方法
- SharedPreferencessharedPreferences=PreferenceManager.getDefaultSharedPreferences(this);
- Strings=sharedPreferences.getString("edit_text_key_2","暂时为空");
- Log.d("edit_text_key_2",s);
- //添加设置的选项
- addPreferencesFromResource(R.xml.preferences);
- //注册添加设置的项数据发生变化时候的监听
- sharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
- }
- @Override
- protectedvoidonResume(){
- super.onResume();
- getPreferenceScreen().getSharedPreferences()
- .registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
- }
- @Override
- protectedvoidonPause(){
- super.onPause();
- getPreferenceScreen().getSharedPreferences()
- .unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
- }
- privateclassMyOnSharedPreferenceChangeListenerimplementsOnSharedPreferenceChangeListener{
- @Override
- publicvoidonSharedPreferenceChanged(SharedPreferencessharedPreferences,Stringkey){
- Toast.makeText(getApplication(),key,Toast.LENGTH_SHORT).show();
- }
- }
- }
更多相关文章
- android 开发问题集,android问题总结,android错误解决收集
- Android(安卓)Notification 通知
- Android修炼之道——Shape
- Android(安卓)Studio 初体验
- Android如何在java代码中设置margin
- Android(安卓)Studio中设置ButterKnife、android butterknife ze
- android WebView全屏观看视频 全屏观看直播
- android 自定义attr 详解
- Android(安卓)自带的一些可用于Activity的Theme