知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
Android學(xué)習(xí)筆記十二.深入理解LauncherActvity之Launc
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):43
深刻懂得LauncherActvity
之LauncherActivity、PreferenceActivity、PreferenceFragment
大年夜下圖我們可以知道,LauncherActivity、PreferanceActivity均持續(xù)于ListActivity,個中LauncherActivity實現(xiàn)當列表界面列表項被點擊時所對應(yīng)的Acitvity被啟動;PreferanceActivity實現(xiàn)一個法度榜樣參數(shù)設(shè)置、存儲功能的Activity列表界面。
[img]http://img.blog.csdn.net/20150104173549501?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
一、LauncherActivity應(yīng)用詳解
1.概述:LauncherActivity的感化是是開辟一個列表界面Activity,然則這個列表界面與通俗的列表界面有所不合。它開辟出來的列表界面中的每個列表項都對應(yīng)于一個Intent,經(jīng)由過程重寫Intent intentForPosition(int position)辦法根據(jù)不合列表返回不合的intent。當我們點擊不合列表項時,應(yīng)用法度榜樣會主動啟動對應(yīng)的Acitviy。效不雅如下:
[img]http://img.blog.csdn.net/20150104173608315?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://blog.csdn.net/u012637501/article/details/42395039/file:/C:/Users/Jiangdongguo/AppData/Local/YNote/data/[email protected]/4607a9b2a34d421ca4f667ae331761b5/clipboard.png
2.LauncherActivity類介紹
(1)構(gòu)造辦法:LauncherActivity()
(2)重要辦法
Intent intentForPosition(int position):根據(jù)不合列表返回不合的intent
void onCreate(Bundle savedInstanceState):啟動Activity第一個被調(diào)用
void onListItemClick(ListView l, View v, int position, long id):當點擊一個列表項時調(diào)用該辦法
(3)Intent構(gòu)造辦法:用于實例化一個Intent對象
Intent()
Intent(Intent o)
Intent(String action)
Intent(String action, Uri uri)
Intent(Context packageContext, Class<?> cls)
Intent(String action, Uri uri, Context packageContext, Class<?> cls)
3.開辟思路及源碼
(1)為LauncherActivity界面填充列表項內(nèi)容。經(jīng)由過程裝配適配器,將數(shù)組字符串數(shù)據(jù)源裝配到視圖,并根據(jù)按體系自帶的android.R.layout.simple_expandable_list_item_1構(gòu)造文件設(shè)計每個列表項外不雅和內(nèi)容;
String[] names={"設(shè)置法度榜樣參數(shù)","查看人種"};
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1 , names);
setListAdapter(adapter);
[img]http://img.blog.csdn.net/20150104173705255?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://blog.csdn.net/u012637501/article/details/42395039/file:/C:/Users/Jiangdongguo/AppData/Local/YNote/data/[email protected]/9d9ae52610594cbfb4817ec0df3b6b46/clipboard.png
(2)重寫Intent intentForPosition(int position)辦法,實現(xiàn)根據(jù)不合列表返回不合的intent。當用戶點擊Activity列表項時,體系將傳遞該列表項地點的地位position參數(shù)給intentForPosition辦法,最后返回一個intent給高低文界面大年夜而實現(xiàn)啟動相對應(yīng)的Acitvity。
Class<?>[] classes={PreferenceActivityTest.class,ExpandableListActivityTest.class};
public Intent intentForPosition(int position)
{
return new Intent(LaunchActivity.this,classes[position]); //new一個intent
}
(3)實現(xiàn)intent對應(yīng)的Acitvity,可以持續(xù)于Activity、PreferenceActivity、ExpandableListActivity等.
[img]http://img.blog.csdn.net/20150104173737546?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://blog.csdn.net/u012637501/article/details/42395039/file:/C:/Users/Jiangdongguo/AppData/Local/YNote/data/[email protected]/f176c1fdf58349228ee5d40228c5cc38/clipboard.png
(3)源代碼
package com.example.android_activity_1; import android.app.LauncherActivity; import android.content.Intent; import android.os.Bundle; import android.widget.ArrayAdapter; /*主Activity:LauncherActivity * 每個列表項都對應(yīng)于一個Intent * */ public class LaunchActivity extends LauncherActivity { //1.定義兩個Activity的名稱 String[] names={"設(shè)置法度榜樣參數(shù)","查看人種"}; //2.定義兩個Activity對應(yīng)的實現(xiàn)類,前者用于顯示一個顯示設(shè)制揭捉項參數(shù)并進行保存的窗口;后者用于顯示一個可展開的列表窗口(Activity) Class<?>[] classes={PreferenceActivityTest.class,ExpandableListActivityTest.class}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //3.裝配ArrayAdapter適配器,將數(shù)據(jù)裝配到對應(yīng)的列表項視圖中 ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1 , names); //4.設(shè)置該窗口顯示的列表所需的adapter setListAdapter(adapter); } //5.重寫Intent IntentForPosition(int position)辦法:根據(jù)列表項返回的intent,用于啟動不合的Activity public Intent intentForPosition(int position){ return new Intent(LaunchActivity.this,classes[position]); //返回一個Intent對象,已指明將要啟動的類,個中 position的值袈溱當用戶點擊Activity中列表項被肯定 } }
二、PreferenceActivity應(yīng)用詳解
1.概述:PreferenceActivity是一個異常有效的基類,當開辟的Android應(yīng)用法度榜樣須要進行選項設(shè)置并欲望這些選項設(shè)置以參數(shù)的情勢保存時,我們可以經(jīng)由過程PreferenceActivity實現(xiàn)。PreferenceActivity與通俗的Acitvity不合,它不再應(yīng)用通俗的界面構(gòu)造文件,而是使悠揭捉項設(shè)置的構(gòu)造文件。
選項設(shè)置的構(gòu)造文件:以PreferenceScreen作為根元素,它注解定義一個參數(shù)設(shè)置的界面構(gòu)造。
別的,一旦Activity持續(xù)了PreferenceActivity,那么該Activity完全不須要本身控制Preferences的讀寫,PreferenceActivity會為我們處理這一切。
2.PreferenceActivity類介紹
(1)嵌仁攀類:class PreferenceActivity.Header
感化:用來描述用戶將要點擊的標頭列表項
(2)PreferenceActivity重要辦法
public void loadHeadersFromResource (int resid, List<PreferenceActivity.Header> target)
功能:解析resid所代表的構(gòu)造資本文件,根據(jù)元素<header../>為一標頭(列表項)添加到目標列表list中。
public void onBuildHeaders (List<PreferenceActivity.Header> target)
功能:負責(zé)加載頁面構(gòu)造文件到Activity,經(jīng)由過程該辦法添加加載至少一項標頭到Activity列表中,并使acitvity運行在其fragment模式。個中,List<PreferenceActivity.Header>為一個列表集合用來存放構(gòu)造文件中的標頭,調(diào)用 loadHeadersFromResource(R.layout.*, List)辦法將構(gòu)造資本添加到列表list數(shù)據(jù)集中。
3.開辟思路及源碼
為了創(chuàng)建一個PreferenceActivity界面,起首須要創(chuàng)建一個對應(yīng)的界面構(gòu)造文件。大年夜Android3.0開端,官方推薦將PreferenceActivity結(jié)合PreferenceFragment來實現(xiàn)參數(shù)設(shè)置界面。個中,PreferenceActivity只負責(zé)加載選項設(shè)置列表的構(gòu)造文件(如圖(A));PreferenceFragment才負責(zé)加載選項設(shè)置的構(gòu)造文件(如圖(B)).
[img]http://img.blog.csdn.net/20150104173757031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://blog.csdn.net/u012637501/article/details/42395039/file:/C:/Users/Jiangdongguo/AppData/Local/YNote/data/[email protected]/712a277d693c4f88942f52ec536606d9/clipboard.png
(1)PreferenceActivity加載選項設(shè)置列表的構(gòu)造文件,其根元素為<preference-headers ...>...</preference-headers>,每一列表項元素為<header ...></header>或者<intent.../>,具體效不雅如上圖(A)所示。
<preference-headers ...>
//實現(xiàn)一個列表項
<header android:fragment="com.example.android_activity_1.PreferenceActivityTest$Prefs1Fragment" //指定列表項啟動Prefs1Fragment界面
android:icon="" //指定列表項擱筆
android:title="" //指定列表項的標題
android:summary=""> //指定列表項解釋
<extra android:name="website" //子元素<extra../>,給Prefs1Fragment界面(Activity)傳遞數(shù)據(jù),即website="www.baidu.com"
android:value=http://www.sjsjw.com/100/000273MYM027880/"www.baidu.com"/>
<intent //子元素<intent.../>,啟動一個Activity
android:action="android.intent.action.VIEW"
android:data=http://www.sjsjw.com/100/000273MYM027880/"http://www.baidu.com"/>
</header>
................
</preference-headers>
個中,android:fragment的感化是指定列表項啟動哪一個preferenceFragment界面,格式為:"包.類.$內(nèi)部類",這個內(nèi)部類持續(xù)于PreferenceFragment。在Prefs1Fragment 獲取傳入<extra.../> 該Fragment的參數(shù) :
String website=getArguments().getString("website");
Toast.makeText(getActivity(), "網(wǎng)站域名是:"+website, Toast.LENGTH_SHORT).show();
[img]http://img.blog.csdn.net/20150104173838031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://blog.csdn.net/u012637501/article/details/42395039/file:/C:/Users/Jiangdongguo/AppData/Local/YNote/data/[email protected]/9e841d11bd4b4250bbf2281e21c7038e/clipboard.png
源代碼res/layout/preference.xml:
該構(gòu)造定義了三個列表項,個中前兩個列表項經(jīng)由過程android:fragment屬性指定啟動響應(yīng)的PreferenceFragment;第三個列表項經(jīng)由過程<intent../>子元素啟動指定的Activity.
<?xml version="1.0" encoding="utf-8" ?> <preference-headers xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 指定:啟動指定preferenceFragment的列表項 --> <header android:fragment="com.example.android_activity_1.PreferenceActivityTest$Prefs1Fragment" android:icon="@drawable/a" android:title="背景燈光選項設(shè)置" android:summary="設(shè)置sex的相干選項"> </header> <!-- 指定:啟動指定preferenceFragment的列表項 --> <header android:fragment="com.example.android_activity_1.PreferenceActivityTest$Prefs2Fragment" android:icon="@drawable/b" android:title="人種選項設(shè)置" android:summary="設(shè)置人種的相干選項"> <!-- 應(yīng)用extra可向Activity傳入額外的數(shù)據(jù) --> <extra android:name="website" android:value=http://www.sjsjw.com/100/000273MYM027880/"www.baidu.com"/>
(2)實現(xiàn)一個持續(xù)于PreferenceActivity的Activity(PreferenceActivityTest.java),重要完成兩個義務(wù):
a.加載指定的選項設(shè)置列表構(gòu)造文件(res/layout/preference.xml)到PreferenceActivity,經(jīng)由過程重寫其public void onBuildHeaders(List<Header> target)辦法實現(xiàn);
public void onBuildHeaders(List<Header> target)
{
super.loadHeadersFromResource(R.layout.preference, target);
}
b.定義實現(xiàn)選項設(shè)置列表的構(gòu)造文件中應(yīng)用的PreferenceFragment內(nèi)部類;
public static class Prefs1Fragment extends PreferenceFragment
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences); //加載選項設(shè)置構(gòu)造文件到PreferenceFragment
}
}
源代碼src/包名/PreferenceActivityTest.java:
package com.example.android_activity_1; import java.util.List; import android.os.Bundle; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.widget.Button; import android.widget.Toast; /*PreferenceActivity: * 結(jié)合PreferenceFragment實現(xiàn)參數(shù)設(shè)置界面, * 個中,PreferenceFragment負責(zé)加載選項設(shè)置的構(gòu)造文件;PreferenceActivity負責(zé)加載選項設(shè)置列表的構(gòu)造文件*/ public class PreferenceActivityTest extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //1.該辦法用于為該界面設(shè)置一個標題按鈕 if(hasHeaders()) { Button button=new Button(this); button.setText("設(shè)置操作"); //將該按鈕添加到該界面上 setListFooter(button); } } //2.該辦法加載選項列表的頁面構(gòu)造文件 @Override public void onBuildHeaders(List<Header> target) { // TODO Auto-generated method stub super.loadHeadersFromResource(R.layout.preference, target); } //3.在PreferenceActivityTest中顯示Prefs1Fragment、Prefs2Fragment兩個內(nèi)部類 public static class Prefs1Fragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); //加載選項設(shè)置構(gòu)造文件到PreferenceFragment } } public static class Prefs2Fragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.display_prefs); //加載選項設(shè)置構(gòu)造文件到PreferenceFragment //獲取傳入該Fragment的參數(shù) String website=getArguments().getString("website"); Toast.makeText(getActivity(), "網(wǎng)站域名是:"+website, Toast.LENGTH_SHORT).show(); } } }
[img]http://img.blog.csdn.net/20150104173921343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://blog.csdn.net/u012637501/article/details/42395039/file:/C:/Users/Jiangdongguo/AppData/Local/YNote/data/[email protected]/843454937bf2452f8fbabfff4c405153/clipboard.png
(3)建立選項設(shè)置參數(shù)構(gòu)造文件display_prefs.xml、preferences.xml
選項設(shè)置參數(shù)構(gòu)造文件,以<PreferenceScreen....></PreferenceScreen>為根元素。選項參數(shù)的每一項,我們可以經(jīng)由過程體系供給的屬性來構(gòu)造本身的選項設(shè)置參數(shù)組,實現(xiàn)預(yù)期的功能。
[img]http://img.blog.csdn.net/20150104174022609?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
源代碼res/xml/preferences.xml
<?xml version="1.0" encoding="utf-8" ?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title='"背景燈光組"'> <ListPreference //解釋:該參數(shù)選項為列表框輸入?yún)?shù) android:key="light" android:title="燈光強度" //參數(shù)選項標題 android:summary="請選擇燈光強度(測試ListPreference)" //參數(shù)選項二級標題 android:dialogTitle="請選擇燈光強度" //彈出列表框的標題 android:entries="@array/light_strength_list" //列表框?qū)⒁@示的內(nèi)容 android:entryValues="@array/light_value_list"/> </PreferenceCategory> <PreferenceCategory android:title="文字顯示組"> <SwitchPreference android:key="autoScroll" android:title="主動滾屏" android:summaryOff="主動滾屏:封閉" android:summaryOn="主動滾屏:開啟" android:defaultValue=http://www.sjsjw.com/100/000273MYM027880/"true"/> 源代碼res/xml/display_prefs.xml[img]http://img.blog.csdn.net/20150104174028243?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://blog.csdn.net/u012637501/article/details/42395039/file:/C:/Users/Jiangdongguo/AppData/Local/YNote/data/[email protected]/8729ec3cb6ff49619dc4b175c5cfb0fc/clipboard.png
解釋:膳綾擎的界面構(gòu)造文件定義了一個參數(shù)設(shè)置界面,該參數(shù)設(shè)置界面中包含兩個參數(shù)設(shè)置組。一旦定義了參數(shù)設(shè)置的界面構(gòu)造文件,我們再在PreferenceFragment中調(diào)用 addPreferencesFromResource(R.xml.preferences);辦法加載選項設(shè)置構(gòu)造文件到PreferenceFragment。
(1)android:key屬性:
(2)res/values/array/數(shù)組
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="light_strength_list" >
<item >暗</item>
<item >亮</item>
<item >最亮</item>
</string-array>
<string-array name="light_value_list" >
<item >1</item>
<item >2</item>
<item >3</item>
</string-array>
</resources>
(4)修改工程文件AndroidManifest.xml設(shè)備、治理膳綾擎的三個Activity。即在清單文件的<application.../>元素中增長ExpandableListActivityTest和PreferenceActivityTest界面Activity。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android_activity_1" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".LaunchActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ExpandableListActivityTest" android:label="查看人種" > </activity> <activity android:name=".PreferenceActivityTest" android:label="設(shè)制揭捉項參數(shù)" > </activity> </application> </manifest>
總結(jié):上述應(yīng)用經(jīng)由過程PreferenceActivity生成選項設(shè)置列表界面;PreferenceFragment生成選項設(shè)置界面(如圖(B))。應(yīng)用PreferenceActivity來進行應(yīng)用法度榜樣選項參數(shù)的設(shè)置,體系會主動將設(shè)置的參數(shù)永遠的保存到體系中。例如,我們單擊設(shè)制揭捉項中的"填寫竽暌姑戶名"列表項,法度榜樣將會主動保存設(shè)置的選項參數(shù)到手機/data/data/<應(yīng)用法度榜樣包名>/share_prefs路徑下,文件名為<應(yīng)用法度榜樣包名>_preferences.xml。
三、PreferenceFragment詳解
在android的應(yīng)用中平日都有setting功能,可以或許設(shè)置一些全局的選項,例如字體色彩,小我愛好等等。 這些器械都是存在一個xml中的,在android中對應(yīng)的對象就是SharedPreferences。
PreferenceFragment 照樣 PreferenceActivity
很明顯PreferenceFragment 是Fregment, PreferenceActivity是Activity。
當你的應(yīng)用針對的體系在3.0以上的時刻,你就應(yīng)當用PreferenceFragment,如今主流體系4.0的情況下,當然選擇應(yīng)用PreferenceFragment。原因是PreferenceFragment是一個加倍膩滑的構(gòu)造,你可以將它依附在任何的activity膳綾擎,谷歌強力推薦應(yīng)用PreferenceFragment!
常用Preference
CheckPreference —— CheckBox 單選框
EditTextPreference —— EditText 輸入文本框
ListPreference —— ListView 列表框
RingtonePreference —— 選擇鈴聲
XML定義常用的屬性有:
android:key : 每個Preference控件環(huán)球無雙的”ID”,獨一表示此Preference。
android:defaultValue : 默認值。 例如,CheckPreference的默認值可為”true”,默認為選中狀況;
EditTextPreference的默認值可為”110” 。
android:enabled : 表示該Preference是否可用狀況。
android:title : 每個Preference在PreferenceScreen構(gòu)造上顯示的標題——大年夜標題
android:summary : 每個Preference在PreferenceScreen構(gòu)造上顯示的標題——小標題(可以沒有)
ListPreference中:
android:entries:類型為array,控件欲顯示的文本
android:entryValues:類型為array,與文本相對應(yīng)的key-value鍵值對,value保存至sharedPreference文件
PreferenceFragment 應(yīng)用步調(diào)(辦法二)
1.定義preference在項目標res/xml中新建一個preferences.xml.用于定義菜單界面的設(shè)制揭捉項
(個中,android:entries 和 android:entryValues 定義在res/values/strings.xml中)
2.創(chuàng)建一個activity用于給PreferenceFragment 依附
- package com.example.androidpreferencefragment;
- import android.app.Activity;
- import android.os.Bundle;
- public class SetPreferenceActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- getFragmentManager().beginTransaction().WordStr(android.R.id.content,
- new PrefsFragment()).commit();
- }
- }
3. 創(chuàng)建PreferenceFragment。
implements OnSharedPreferenceChangeListener 是用于監(jiān)聽SharedPreference是否改變的。這里重要的感化是當SharedPreference改變的時刻及時更新界面中preference的summary,供給一個更好的交互。留意在OnResume和OnPause中要注冊和卸載監(jiān)聽器,保護activity中的生命周期。注:不克不及給每個preference設(shè)置OnChangeListener來更新界面中preference的summary,如許會阻攔體系存儲preference.xml.
- package com.example.androidpreferencefragment;
- import android.annotation.SuppressLint;
- import android.content.SharedPreferences;
- import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
- import android.os.Bundle;
- import android.preference.Preference;
- import android.preference.PreferenceFragment;
- import android.preference.Preference.OnPreferenceChangeListener;
- @SuppressLint("NewApi")
- public class PrefsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener{
- @Override
- public void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- // Load the preferences from an XML resource
- addPreferencesFromResource(R.xml.preferences);
- }
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- // TODO Auto-generated method stub
- // Set summary to be the user-description for the selected value
- if(!key.equals(MainActivity.PRF_CHECK))
- {
- Preference connectionPref = findPreference(key);
- connectionPref.setSummary(sharedPreferences.getString(key, ""));
- }
- }
- @Override
- public void onResume() {
- super.onResume();
- getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
- }
- @Override
- public void onPause() {
- getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
- super.onPause();
- }
- }
4.設(shè)置默認
當用戶第一次運行應(yīng)用的時刻,用戶還沒有設(shè)置本身preference,這時刻就要指定默認的prefernnce了。
起首在xml定義好android:defaultValue項。然后在主Activity(也可所以其他activity,但在第一次運行的時刻必定會進去,比瘸懶屏Activity)的onCreate辦法中調(diào)用setDefaultValues辦法。
- PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
這個函數(shù)有三個參數(shù):
第一個為應(yīng)用高低文,第二個是preference的id,第三個為false指只在第一次運行的時刻加載默認值。
5.掏出preference值
SharedPreferences mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
然后經(jīng)由過程get辦法和key值就可以掏出對應(yīng)的值了,比如:
boolean my_checkbox_preference = mySharedPreferences.getBoolean("checkbox_preference", false);
String my_edittext_preference = mySharedPreferences.getString("edittext_preference", "");
參考:
http://blog.csdn.net/silangquan/article/details/11022335
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站建設(shè)方案 doc
- 云南網(wǎng)站建設(shè)哪家好
- 云南網(wǎng)站建設(shè)公司哪家好
- 昆明做網(wǎng)站
- 昆明網(wǎng)站建設(shè)公司
- 小程序退款
- 開發(fā)框架
- 云南科技公司
- 云南小程序制作
- 汽車回收系統(tǒng)
- 汽車報廢系統(tǒng)
- 網(wǎng)站建設(shè)制作
- 云南網(wǎng)站建設(shè)首選
- 云南省城鄉(xiāng)建設(shè)廳網(wǎng)站
- 云南小程序公司
- 網(wǎng)站沒排名
- 云南網(wǎng)站建設(shè)選
- 報廢車拆解系統(tǒng)
- 小程序表單
- 海報插件
- 網(wǎng)站建設(shè)首選公司
- 報廢車回收管理系統(tǒng)
- 云南網(wǎng)站建設(shè)哪家強
- SEO
- 搜索引擎自然排名
- 小程序技術(shù)
- 汽車報廢管理
- 報廢車拆解管理系統(tǒng)
- 網(wǎng)站小程序
- 小程序商城