Bmi專案功能之顯示資訊,包括Toast、AlertDialog

By | 2017-04-03

使用浮動顯示-Toast類別

Android提供浮動顯示的元件「android.widget.Toast」類別,使用Toast類別的靜態方法makeText方法可以浮動顯示文字,規格如下:

第一個參數為Context,目前類別MainActivity即是一個Context物件,因為Activity的上二層父類別就是Context,因此本類別MainActivity即是Context的一種,可使用「this」關鍵字代表本類別。第二個參數為「Charsequence」介面,Java的String類別即是其子類別,因此第二個參數即是想要顯示的字串值。最後,第三個參數為浮動顯示的時間長度,1代表有較長的時間停留在畫面上(大概三秒),而0代表較短時間,使用範例如下:

請注意第三個參數,不要直接使用1或0,應使用Toast類別中為其所定義的LENGTH_LONG或LENGTH_SHORT代表長與短時間的常數,雖然程式碼會比起直接給1或0來得長,但能大大增加程式在未來的可讀性。最後,別忘了呼叫Toast類別的show方法才會在畫面下方顯示浮動資訊,如下圖:

在本例先將bmi值(float型態)轉換為String後,即可浮動顯示BMI值,程式碼如下:

執行結果如下圖:

使用浮動顯示主要目的是盡量不影響使用者,重要性不高的資訊可以使用Toast類別顯示,但如果有重要資訊需告知使用者,則可使用AlertDialog對話框。

使用對話框-AlertDialog類別

對話框是很常見的視覺元件,可用來提示、告知使用者必要的訊息,主要由Android中的「android.app.AlertDialog」類別提供相關的功能。由於對話框的種類繁多,有無標題、圖示、訊息、按鈕等各類需求,要提供如此繁複的建構子是有一定難度的,就算有,開發人員光是要記住這麼多的建構子參數也是非常頭痛的,因此,AlertDialog是以「Builder」設計模式提供使用者產生合適的物件。

AlertDialog.Builder類別

「AlertDialog.Builder」是一個公開的內部類別,它就如同一個「製造機」,先產生AlertDialog.Builder物件後,再呼叫Builder提供的方法配置想要的功能與資訊,完成後再呼叫show()方法產生對話框並顯示在畫面上。產生Builder物件時,建構子參數需要Context類別,可使用this關鍵字將MainActivity傳入,範例程式碼如下:

 

上述的builder物件是為特定的對話框服務,對話框顯示完成後,其實builder物件不會再被使用。

簡化寫法

在開發時,對於不需要重複使用的物件,可使用匿名方式(Anonymouse)建立Builder物件,設定完成後即顯示,而不需要為物件命名一個物件,使用方式如下:

上述程式碼的第59行產生一個Builder物件,接著馬上在第60、61行呼叫設定對話框資訊的setMessage與setTitle方法設定內文與標題,使用「bmi+ “”」是利用加號其中一個運算為String時,會將另一個運算元也轉換為String的特性,目的是稍微簡化程式碼,最後62行直接將已設定完成的對話框物件顯示在畫面上。

AlertDialog.Builder的方法

常用的方法如下表:

  • AlertDialog create():依Builder目前配置產生一個對話框物件。
  • Builder setIcon(int resId):設定圖示,使用R.drawable.X資源記錄。
  • Builder setMessage(Charsequence text):設定對話框的內文字串。
  • Builder setTitle(Charsequence text):設定對話框的標題字串。
  • void show():產生對話框物件並顯示在畫面中。

對話框按鈕

Android的AlertDialog能夠配置按鈕,預設按鈕有三種,一為「正向按鈕」,例如確定(OK)、是(Yes),二為「中性按鈕」,例如取消(Cancel),第三種為「否定按鈕」,例如否(No)。設定這些按鈕的方法如下:

  • 正向按鈕方法為setPositiveButton,使用如下:

提示:

當游標放在方法的括號內時,按下「Ctrl+P」可顯示方法的規格,可得知傳入參數的資料型態。

第一個參數為String,代表按鈕中顯示的文字資料,第二個參數是當按鈕被使用者按下時的傾聽器物件,上圖第62行中給的是null值,代表按下OK按鈕後不做任何事,會直接關閉對話框,執行結果對話框如下圖:

  • 中性按鈕方法為setNeuButton,使用如下:

執行結果對話框如下圖:

各個版本的Android系統對於正向、中性、反向按鈕的排列方式會有不同,因此,針對按鈕的意義去使用合適的方法設定,讓Android系統決定按鈕應該的位置即可。

相關文章:

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *