Android开发之--Preferences的使用
2019獨角獸企業重金招聘Python工程師標準>>>
在android程序中,記錄用戶的偏好是個能極大提升用戶體驗的功能。Android里面的Preferences正式為此事而生。
Preferences可以用來記錄簡單的整數,布爾值,字符串等數據,且在各個Activity之間均能訪問,主要用來實現程序的參數設置功能。最簡單的用法是寫兩行代碼自己創建,如下:
//從應用的任意處獲得Preferences SharedPreferences mPerferences = PreferenceManager .getDefaultSharedPreferences(this); //從Preferences中獲得一個值,如果不存在則值為null String loginName = mPerferences.getInt("name", null); if(loginName == null){Log.v("Preferences", "User not login"); }//獲得Editor編輯Preferences的值 SharedPreferences.Editor mEditor = mPerferences.edit(); mEditor.putInt("name", "admin"); //將更新后的值提交 mEditor.commit();
通過這種方式,應用會在自己的數據文件夾下新建一個名為shared_prefs的文件夾,并創建一個以應用包名為名稱的xml文件存放Preferences的值。也就是這些preferences的值不只是跨activity的,更能在程序下次啟動的時候獲得。如果有特別的需求(比如記錄多個用戶的配置信息),還可以自定義存放Preferences值的文件的名字:
SharedPreferences mPerferences = PreferenceManager.getSharedPreferences("file-name", 0);
如果應用中設置信息不多,使用上面的方法完全沒問題。Preferences還有更高級的用法--使用PreferenceActivity 。PreferenceActivity 是專門為程序的設置界面而設計的一個特殊的activity,配合這個activity的界面xml文件不是在res/layout下,而是res/xml/Preferences.xml。將你要設置的選項按照一定的格式寫在res/xml/Preferences.xml中,并在繼承了PreferenceActivity 的Activity的onCreate函數中加入代碼:
addPreferencesFromResource(R.xml.preferences); 則程序就會自動生成一個android風格的設置界面。
關于Preferences.xml的格式,這里有一個復雜的文檔供學習:
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" ><PreferenceCategory android:title="@string/inline_preferences" ><CheckBoxPreferenceandroid:key="checkbox_preference"android:summary="@string/summary_toggle_preference"android:title="@string/title_toggle_preference" /></PreferenceCategory><PreferenceCategory android:title="@string/dialog_based_preferences" ><EditTextPreferenceandroid:dialogTitle="@string/dialog_title_edittext_preference"android:key="edittext_preference"android:summary="@string/summary_edittext_preference"android:title="@string/title_edittext_preference" /><ListPreferenceandroid:dialogTitle="@string/dialog_title_list_preference"android:entries="@array/entries_list_preference"android:entryValues="@array/entryvalues_list_preference"android:key="list_preference"android:summary="@string/summary_list_preference"android:title="@string/title_list_preference" /></PreferenceCategory><PreferenceCategory android:title="@string/launch_preferences" ><PreferenceScreenandroid:key="screen_preference"android:summary="@string/summary_screen_preference"android:title="@string/title_screen_preference" ><CheckBoxPreferenceandroid:key="next_screen_checkbox_preference"android:summary="@string/summary_next_screen_toggle_preference"android:title="@string/title_next_screen_toggle_preference" /></PreferenceScreen><PreferenceScreenandroid:summary="@string/summary_intent_preference"android:title="@string/title_intent_preference" ><intentandroid:action="android.intent.action.VIEW"android:data="http://www.baidu.com" /></PreferenceScreen></PreferenceCategory><PreferenceCategory android:title="@string/preference_attributes" ><CheckBoxPreferenceandroid:key="parent_checkbox_preference"android:summary="@string/summary_parent_preference"android:title="@string/title_parent_preference" /><CheckBoxPreferenceandroid:dependency="parent_checkbox_preference"android:key="child_checkbox_preference"android:layout="?android:attr/preferenceLayoutChild"android:summary="@string/summary_child_preference"android:title="@string/title_child_preference" /></PreferenceCategory></PreferenceScreen>
既然Preference可以用來保存app的配置信息,那么那些一改變設置就能立刻引發界面或程序改變的效果是怎么做的呢?答曰:onSharedPreferenceChangeListener。如下。注意,當使用SharedPreferences.Editor改變了一個值后切莫忘記調用commit函數,否則觸發器就會一直觸發。
public class xxxActivity extends Activity implements OnSharedPreferenceChangeListener { //private SharedPreferences prefs;@Overridepublic void onCreate() { //super.onCreate();this.prefs = PreferenceManager.getDefaultSharedPreferences(this);this.prefs.registerOnSharedPreferenceChangeListener(this);Log.i(TAG, "onCreated");}public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { //if(key.equals("****")){//do someting}} }
轉載于:https://my.oschina.net/gesuper/blog/166978
總結
以上是生活随笔為你收集整理的Android开发之--Preferences的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做一行爱一行
- 下一篇: 模拟窗口效果 Jquery