編輯:開發入門
我們都知道,一般人身高的變化程度,比起體重的變化程度小的多。
因此就設計一款 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" 所代表的偏好設定參數中。
下面是開始android編程的好方法: 找一些與你想做事情類似的代碼 調整它,嘗試讓它做你像做的事情 經歷問題 使用
所需的工具開始開發 Android 應用程序的最簡捷的方式是下載 android SDK 和 Eclipse IDE(參見 參考資料)。android 開發可
簡介黑莓和 iPhone 都提供了受歡迎的、高容量的移動平台,但是卻分別針對兩個不同的消費群體。黑莓是企業業務用戶的不二選擇。但是,作為一種消費設備,它在易用性和 “新
作為開發者,你的第一感覺是你拿到這個開發框架寫“Hello, World!”程序時的難易程度給你留下的。 當然,在android裡,這個非常容易,下面我給你演