Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 開發入門 >> Android學習之存儲信息

Android學習之存儲信息

編輯:開發入門

我們都知道,一般人身高的變化程度,比起體重的變化程度小的多。

因此就設計一款 BMI 計算程序來說,如果能在使用者第一次輸入身高體重值後,程序能幫我們預先記住上次輸入過的身高,那麽等到下次啟動程序時,便只需要輸入體重。這麽一來,減少了使用者重複輸入的麻煩,在使用上就更方便了。使用者應該會喜歡這個便利的功能吧。

使用偏好設定

打開 "src/com/demo/android/bmi/Bmi.Java" ,在 "onCreate"和 "onStop" 中加入 "Preference"( 偏好設定 ) 相關的程序碼。完整的程序碼如下:

代碼 :

ublic class Bmi extends Activity {

          private static final String TAG = "Bmi";

        public static final String PREF = "BMI_PREF";

        public static final String PREF_HEIGHT = "BMI_Height";

       

/** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        setContentVIEw(R.layout.main);

        findVIEws();

        restorePrefs();

        setListensers();

    }

 

    // Restore preferences

    private void restorePrefs()

    {

        SharedPreferences settings = getSharedPreferences(PREF, 0);

        String pref_height = settings.getString(PREF_HEIGHT, "");

        if(! "".equals(pref_height))

        {

                fIEld_height.setText(pref_height);

                fIEld_weight.requestFocus();

        }

    }

 

......

        @Override

        protected void onStop(){

                super.onStop();

                // Save user preferences. use Editor object to make changes.

                SharedPreferences settings = getSharedPreferences(PREF, 0);

                settings.edit()

                  .putString(PREF_HEIGHT, fIEld_height.getText().toString())

                  .commit();

        }

 

講解

取得偏好設定

代碼 :

// Restore preferences

    private void restorePrefs()

    {

        SharedPreferences settings = getSharedPreferences(PREF, 0);

        String pref_height = settings.getString(PREF_HEIGHT, "");

        if(! "".equals(pref_height))

        {

                fIEld_height.setText(pref_height);

                fIEld_weight.requestFocus();

        }

    }

 

 

我們在 "onCreate" 函式中,加入一行 "restorePrefs" 呼叫。並在 "onCreate" 函式外,再定義一個 "restorePrefs" 函式如上。

代碼 :

SharedPreferences settings = getSharedPreferences(PREF, 0);

我們宣告了一個偏好設定( SharedPreferences )型別"settings" ,並使用 "getSharedPreferences" 函式,來尋 找系統中有無符合以 "BMI_PREF" 字串( PREF 參數)作為檔名的偏好設定檔。如果有符合條件的偏好設定檔存在的話,就將這個偏好設定指定使用 "settings" 作為代號來操作。如果沒有的 話,"getSharedPreferences" 函式會回傳 0 給 "settings" 。

代碼 :

    String pref_height = settings.getString(PREF_HEIGHT, "");

我們可以透過 "getXXX" 函式,來從偏好設定(SharedPreferences) 讀取不同型別的內容。例如本例中使用"getString" 來讀取 文字類型的信息。當 "PREF_HEIGHT" 偏好設定參數存在時,字串 "pref_height" 就會得到偏好設定參數的內容。如果不存 在 "PREF_HEIGHT" 這個偏好設定參數時,字串"pref_height" 則會得到一個空字串。

代碼 :

if(! "".equals(pref_height))

        {

                pref_height.setText(pref_height);

            ...

        }

 

當 "pref_height" 字串存在時,我們將 fIEld_height 欄位內容設定成偏好設定參數中取出的值。

代碼 :

fIEld_weight.requestFocus();

同時,因為身高欄位已經預先填好了,使用者只需要再填入體重值即可開始計算自己的 BMI 值。但是當程序一執行,預設的焦點欄位(游標)還是停在 " 身高 " 欄位上。因此我們可以在"fIEld_weight" 欄位識別符號上,使 用 "requestFocus" 函式,來手動將焦點欄位改到 " 體重 " 欄位上。這樣當使用者要輸入時,如果之前已經輸入過 " 身高 " ,那麽程序就會自動幫忙填 好上次輸入的身高,並把焦點欄位設置到 " 體重 " 欄位上,使用者只需直接輸入體重數字就可以了。

如果只加入了 " 取得偏好設定 " 這段的程序 碼,就運行模擬器來看看結果,會發現我們寫在 "restorePrefs" 函式中的程序碼,目前都還沒有發生作用。這是因為我們尚未在程序中儲存任何偏好 設定。接著,我們將在程序中加入儲存偏好設定的程序碼,好能在開啟Activity 時讀到偏好設定。

儲存偏好設定

代碼 :

        @Override

        protected void onStop(){

                super.onStop();

                // Save user preferences. use Editor object to make changes.

                SharedPreferences settings = getSharedPreferences(PREF, 0);

                settings.edit()

                  .putString(PREF_HEIGHT, fIEld_height.getText().toString())

                  .commit();

        }

當我們使用 "Home" 、 "Back" 按鈕或其他方式離開當前的Activity 時,我們才把身高的值儲存到偏好設定中。根據上一章活動的生命週期,我們知道離開當前螢幕的最後一個狀態是 "Stop" 狀態。因此我們覆載 (Override) 了 "onStop" 函式,在其中加入儲存身高偏好設定的程序碼。 "super.onStop" 的作用是先將原本的"onStop" 函 式執行一遍。

代碼 :

SharedPreferences settings = getSharedPreferences(PREF, 0);

我們宣告了一個偏好設定( SharedPreferences )型別"settings" ,並使用 "getSharedPreferences" 函式,來尋 找系統中有無符合以 "BMI_PREF" 字串( PREF 參數)作為檔名的偏好設定檔。如果有符合條件的偏好設定檔存在的話,就將這個偏好設定指定使用 "settings" 作為代號來操作。如果沒有的 話,"getSharedPreferences" 函式會回傳 0 給 "settings" 。

代碼 :

settings.edit()
                  .putString(PREF_HEIGHT, fIEld_height.getText().toString())

                  .commit();

在此我們串接了三個 settings 擁有的函式: "edit" 、"putString" ,和 "commit" 。要改變偏好設定(SharedPreferences) 型別的內容,需要透 過 "edit" 函式來編輯。編輯結束後,要透過 "commit" 函式來將改變寫到系統中。我們可以透過 "putXXX" 函式來為偏好設定 (SharedPreferences) 填入不同型別的內容。例如本例中使用 "putString" 來寫入文字類型的信息(讀者也可以試試用 putInt 或 putFloat 函式來直接將身高值儲存成整數或浮點數)。

本例中 "putString" 函式所執行的動作,是透過"fIEld_height" 界面元件識別符號來取得身高的字串後,將字串儲存到 "PREF_HEIGHT" 所代表的偏好設定參數中。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved