2010年5月23日 星期日

增加對話框吧!

增加對話框吧!

話先說在前頭


現在我們要為程式加上一個關於的視窗。


  1. 首先我們要先在 import 的地方加上 android.app.AlertDialog;
  2. 在計算的 onClick 的最後面加上 openOptionsDialog(); ,然後利用上一篇教的自動的功能新增涵式吧。
  3. openOptionsDialog(); 加上程式下面的程式碼吧。


    1.         private void openOptionsDialog() {
    2.             // TODO Auto-generated method stub
    3.             new AlertDialog.Builder(Bmi2.this)
    4.             .setTitle("關於 Android BMI2")
    5.             .setMessage("Android BMI2 Calc")
    6.             .setPositiveButton("OK", new
    7.             .show();
    8.         }

  1. 然後執行程式,按下計算的按鈕後就會出現下面的畫面了。
  2. 不過現在跳出訊息視窗之後只能按[Undo]離開這個視窗,這樣有點怪怪的,所以我們給他加上一個[確認]的按鈕。
  3. 要增加按鈕的話先在 import 的地方加上 android.content.DialogInterface;
  4. 然後把程式改成下面的樣子吧!增加6~13行的程式。
    1.         private void openOptionsDialog() {
    2.             // TODO Auto-generated method stub
    3.             new AlertDialog.Builder(Bmi2.this)
    4.             .setTitle("關於 Android BMI2")
    5.             .setMessage("Android BMI2 Calc")
    6.             .setPositiveButton("OK", new DialogInterface.OnClickListener() {
    7.                
    8.                 @Override
    9.                 public void onClick(DialogInterface dialog, int which) {
    10.                     // TODO Auto-generated method stub
    11.                    
    12.                 }
    13.             })
    14.             .show();
    15.         }
  5. 然後執行程式看看跳出來的視窗有什麼不一樣吧!多了一個[OK]的按鈕,這樣就可以不用按[Undo]鍵囉!

另一種方式-Toast

Toast 在顯示一段時間之後會自動消失,這樣就可以不用去按[OK]鈕了。我們直接把程式改成下面的樣子吧!


    1.         private void openOptionsDialog() {
    2.             // TODO Auto-generated method stub
    3.             Toast.makeText(Bmi2.this, "BMI2 計算器", Toast.LENGTH_SHORT).show();
    4.         }

執行程式按下計算的按鈕會顯示如下圖的訊息視窗,然後過幾秒鍾後自行消失不見。

所有程式如下:

    1. package com.demo.android.bmi2;
    2.  
    3. import android.app.Activity;
    4. import android.os.Bundle;
    5. import android.widget.Button;
    6. import android.widget.EditText;
    7. import android.widget.TextView;
    8. import android.widget.Toast;
    9. import android.view.View;
    10. import android.view.View.OnClickListener;
    11. import java.text.DecimalFormat;
    12. import android.app.AlertDialog;
    13. import android.content.DialogInterface;
    14.  
    15. public class Bmi2 extends Activity {
    16.    
    17.     private View btnCalc;
    18.     private TextView fieldHeight;
    19.     private TextView fieldWeight;
    20.     private TextView result;
    21.     private TextView fieldSuggest;
    22.  
    23.     /** Called when the activity is first created. */
    24.     @Override
    25.     public void onCreate(Bundle savedInstanceState) {
    26.         super.onCreate(savedInstanceState);
    27.         setContentView(R.layout.main);
    28.        
    29.         findViews();
    30.         setListeners();
    31.     }   
    32.    
    33.     private void setListeners() {
    34.         // TODO Auto-generated method stub
    35.         btnCalc.setOnClickListener(calcBMI);
    36.     }
    37.    
    38.     private void findViews() {
    39.         // TODO Auto-generated method stub
    40.         btnCalc = (Button)findViewById(R.id.btnCalc);
    41.         fieldHeight = (EditText)findViewById(R.id.etHeight);
    42.         fieldWeight = (EditText)findViewById(R.id.etWeight);
    43.         result = (TextView)findViewById(R.id.tvResult);
    44.         fieldSuggest = (TextView)findViewById(R.id.tvSuggest);
    45.     }
    46.  
    47.     private OnClickListener calcBMI = new OnClickListener()
    48.     {
    49.         public void onClick(View v)
    50.         {
    51.             DecimalFormat nf = new DecimalFormat("0.00");
    52.            
    53.             double height = Double.parseDouble(fieldHeight.getText().toString())/100;
    54.             double weight = Double.parseDouble(fieldWeight.getText().toString());
    55.             double bmi = weight / (height * height);
    56.            
    57.             result.setText("Your BMI is " + nf.format(bmi));
    58.  
    59.             if(bmi>25)
    60.             {
    61.                 fieldSuggest.setText(R.string.advice_heavy);
    62.             }
    63.             else if(bmi<20)
    64.             {
    65.                 fieldSuggest.setText(R.string.advice_light);
    66.             }
    67.             else
    68.             {
    69.                 fieldSuggest.setText(R.string.advice_avg);
    70.             }
    71.             openOptionsDialog();
    72.         }
    73.  
    74.         private void openOptionsDialog() {
    75.             // TODO Auto-generated method stub
    76.             Toast.makeText(Bmi2.this, "BMI2 計算器", Toast.LENGTH_SHORT).show();
    77.             /*new AlertDialog.Builder(Bmi2.this)
    78.             .setTitle("關於 Android BMI2")
    79.             .setMessage("Android BMI2 Calc")
    80.             .setPositiveButton("OK", new DialogInterface.OnClickListener() {
    81.                
    82.                 @Override
    83.                 public void onClick(DialogInterface dialog, int which) {
    84.                     // TODO Auto-generated method stub
    85.                    
    86.                 }
    87.             })
    88.             .show();*/
    89.         }
    90.     };
    91. }

沒有留言:

張貼留言