欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

Android學(xué)習(xí)筆記十二.深入理解LauncherActvity之Launc - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 技術(shù)分享 >

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 依附

  1. package com.example.androidpreferencefragment;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.   
  6. public class SetPreferenceActivity extends Activity {  
  7.   
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {  
  10.         // TODO Auto-generated method stub  
  11.         super.onCreate(savedInstanceState);  
  12.           
  13.         getFragmentManager().beginTransaction().WordStr(android.R.id.content,  
  14.                 new PrefsFragment()).commit();  
  15.     }  
  16.   
  17. }


3. 創(chuàng)建PreferenceFragment。 
    implements OnSharedPreferenceChangeListener 是用于監(jiān)聽SharedPreference是否改變的。這里重要的感化是當SharedPreference改變的時刻及時更新界面中preference的summary,供給一個更好的交互。留意在OnResume和OnPause中要注冊和卸載監(jiān)聽器,保護activity中的生命周期。注:不克不及給每個preference設(shè)置OnChangeListener來更新界面中preference的summary,如許會阻攔體系存儲preference.xml.
  1. package com.example.androidpreferencefragment;  
  2.   
  3. import android.annotation.SuppressLint;  
  4. import android.content.SharedPreferences;  
  5. import android.content.SharedPreferences.OnSharedPreferenceChangeListener;  
  6. import android.os.Bundle;  
  7. import android.preference.Preference;  
  8. import android.preference.PreferenceFragment;  
  9. import android.preference.Preference.OnPreferenceChangeListener;  
  10.   
  11. @SuppressLint("NewApi")  
  12. public class PrefsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener{  
  13.   
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         // TODO Auto-generated method stub  
  17.         super.onCreate(savedInstanceState);  
  18.   
  19.         // Load the preferences from an XML resource  
  20.         addPreferencesFromResource(R.xml.preferences);  
  21.     }  
  22.   
  23.     @Override  
  24.     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {  
  25.         // TODO Auto-generated method stub  
  26.         // Set summary to be the user-description for the selected value  
  27.         if(!key.equals(MainActivity.PRF_CHECK))  
  28.         {  
  29.             Preference connectionPref = findPreference(key);  
  30.             connectionPref.setSummary(sharedPreferences.getString(key, ""));  
  31.         }  
  32.     }  
  33.   
  34.     @Override  
  35.     public void onResume() {  
  36.         super.onResume();  
  37.         getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);  
  38.   
  39.     }  
  40.   
  41.     @Override  
  42.     public void onPause() {  
  43.         getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);  
  44.         super.onPause();  
  45.     }  
  46.   
  47. }  


4.設(shè)置默認
    當用戶第一次運行應(yīng)用的時刻,用戶還沒有設(shè)置本身preference,這時刻就要指定默認的prefernnce了。

      起首在xml定義好android:defaultValue項。然后在主Activity(也可所以其他activity,但在第一次運行的時刻必定會進去,比瘸懶屏Activity)的onCreate辦法中調(diào)用setDefaultValues辦法。   
  1. 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)案例查看更多