Android学习之Shared Preference
在之前遇到有個需求是要改settings里面自動轉屏的首選項,于是就學習了下Shared Preference。Shared Preference是一種簡單的、輕量級的鍵/值對機制,用于保存原始應用程序數據,最常見的就是首選項。
如果沒有特殊要求,我們可以使用Android提供的框架來創建系統樣式的Preference Screen,在其內部可以包含PreferenceCategory和Preference<control>元素的任意組合。建立Preference Screen,需要向里面添加首選項控件,原生的這些控件有:CheckBoxPreference、EditTextPreference、ListPreference、MultiSelectListPreference和RingtonePreference,每種控件至少包含4種屬性:android:key,android:title,android:summary,android:defaultValue,用一種圖來對其進行說明:
? 創建Preference有兩種方法,第一種是使用PreferencesActivity。首先在res/values下創建一個arrays.xml用于存放ListPreference的數據
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string-array name="update_freq_options"> 4 <item>Every Minute</item> 5 <item>5 minutes</item> 6 <item>10 minutes</item> 7 <item>15 minutes</item> 8 <item>Every Hour</item> 9 </string-array> 10 <string-array name="magnitude"> 11 <item>1</item> 12 <item>3</item> 13 <item>5</item> 14 <item>6</item> 15 <item>7</item> 16 <item>8</item> 17 </string-array> 18 <string-array name="magnitude_options"> 19 <item>1</item> 20 <item>3</item> 21 <item>5</item> 22 <item>6</item> 23 <item>7</item> 24 <item>8</item> 25 </string-array> 26 <string-array name="update_freq_values"> 27 <item>1</item> 28 <item>5</item> 29 <item>10</item> 30 <item>15</item> 31 <item>60</item> 32 </string-array> 33 34 </resources>然后在res/xml下創建userpreferences.xml,用于定義PreferenceScreen
1 <?xml version="1.0" encoding="utf-8"?> 2 <PreferenceScreen 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <CheckBoxPreference 5 android:key="PREF_ANTUO_UPDATE" 6 android:title="Auto refresh" 7 android:summary="Select to turn on automatic updating" 8 android:defaultValue="true"/> 9 <ListPreference 10 android:key="PREF_UPDATE_FREQ" 11 android:title="Prefresh frequency" 12 android:summary="Frequency at which to refresh earthquake list" 13 android:entries="@array/update_freq_options" 14 android:entryValues="@array/update_freq_values" 15 android:dialogTitle="Prefresh frequency" 16 android:defaultValue="60"/> 17 <ListPreference 18 android:key="PREF_MIN_MAG" 19 android:title="Minmum magnitude" 20 android:summary="Select the minimum magnitude earthquake to report" 21 android:entries="@array/magnitude_options" 22 android:entryValues="@array/magnitude" 23 android:dialogTitle="Magnitude" 24 android:defaultValue="3"/> 25 </PreferenceScreen>最后在MainActivity中重寫onCreate方法,這個MainActivity要繼承PreferenceActivity,使用addPreferencesFromResource添加PreferenceScreen
1 public class MainActivity extends PreferenceActivity 2 { 3 @Override 4 protected void onCreate(Bundle savedInstanceState) 5 { 6 // TODO Auto-generated method stub 7 super.onCreate(savedInstanceState); 8 addPreferencesFromResource(R.xml.userpreferences); 9 } 10 }?OK,搞定,效果如圖
?????? ? ? ?? ? ? ??
第二種方法是使用PreferenceFragment,首先創建UsePreferenceFragment類繼承PreferenceFragment類,重寫onCreate方法,使用addPreferencesFromResource來加載userpreferences.xml
1 public class UserPreferenceFragment extends PreferenceFragment 2 { 3 @Override 4 public void onCreate(Bundle savedInstanceState) 5 { 6 // TODO Auto-generated method stub 7 super.onCreate(savedInstanceState); 8 addPreferencesFromResource(R.xml.userpreferences); 9 } 10 }然后在res/xml下創建preference_headers.xml,來關聯UsePreferenceFragment
1 <?xml version="1.0" encoding="utf-8"?> 2 <preference-headers 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <header android:fragment="com.sharedpreferencetest.UserPreferenceFragment" 5 android:title="Settings" 6 android:summary="Earthquake Refresh Settings" /> 7 </preference-headers>?最后在MainActivity中重寫onBuildHeaders方法
1 public class MainActivity extends PreferenceActivity 2 { 3 @Override 4 public void onBuildHeaders(List<Header> target) 5 { 6 // TODO Auto-generated method stub 7 loadHeadersFromResource(R.xml.preference_headers, target); 8 } 9 }?搞定,效果如圖: 然后點擊Settings就會進入下個界面
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
轉載于:https://www.cnblogs.com/ppdark/p/3341249.html
總結
以上是生活随笔為你收集整理的Android学习之Shared Preference的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate入门之关系篇:多对一和
- 下一篇: mongodb java driver