2011年11月25日 星期五

Android 學習筆記(GDD01解題)

1. main.xml  使用 AbsoluteLayout放入以下元件:
textView1 取用 strings   的 title. ==> 計算你/妳的BMI值
textView2 取用 strings 的 text3 ==> 男性/女性
textView3 取用 strings 的 text1 ==> 身高(m):
textView4 取用 strings 的 text2 ==> 體重(kg):

height(EditText)
weight(EditText)
button1  直接在 text輸入'計算'

RadioGroup (horizontal)下放入兩個RadioButton text 分別為男性(male)及女性(female),
男性的RadioButton要Checked="true"

2. 實作  GDD01.java 的 onClick 事件

  //從輸入介面中取出了的身高、體重值,要將身高、體重值傳送給 child_Activity 後作計算
 
   etheight = (EditText) findViewById(R.id.height);
   double height = Double.parseDouble(etheight.getText().toString());
  
         etweight = (EditText) findViewById(R.id.weight);
         double weight = Double.parseDouble(etweight.getText().toString());
        
         String Sex="";
           rb1 = (RadioButton)findViewById(R.id.male);
           rb2 = (RadioButton)findViewById(R.id.female);
        
         if (rb1.isChecked())
         {
          Sex = "M";
         }
         else
         {
          Sex = "F";
         }
        //這些附加在 Intent 上的訊息都儲存在 Bundle 物件中
   
         Intent intent = new Intent();
         intent.setClass(GDD01.this, GDD01_child.class); ==> 注意裡使用  intent.setClass()

         Bundle b = new Bundle();
         b.putDouble("height", height);
         b.putDouble("weight", weight);
         b.putString("Sex", Sex);

   //透過「intent.putExtras(bundle)」敘述,將「bundle」 物件附加在 Intent 上,隨著 Intent 送出而送出

         intent.putExtras(b);

         startActivityForResult(intent,0); ==> 注意這裡使用 startActivityForResult(intent,0)
        
3. GDD01_child.java 要實在三個Function
BMI格式化 / 取得 BMI / 依 BMI取得建議值. 
BMI 格式化 使用 JAVA 的 DecmialFormat 功能.

private String  format(double num)
{
DecimalFormat nf = new DecimalFormat("0.00");
String s = nf.format(num);
return s;
}

計算BMI

private String getBMI(double height, double weight)
{
     double BMI_value = weight / ( height * height);
     String aa = getStrig(R.string.report_result);
     String bb = format(BMI_value);
      return aa + bb;
}



取出建議值
  //依BMI值取得建議
  private String getAdvice (String Sex, double height, double weight)
  {
  double BMI_MAX;
  double BMI_MIN;
  double BMI = weight / ( height * height);
 
  if (Sex.equals("M")){
  BMI_MAX = 25.0;
  BMI_MIN = 20.0;
  }
  else
  {
   BMI_MAX = 22.0;
   BMI_MIN = 18.0;
  }
  if (BMI>BMI_MAX)
  {
   return getString(R.string.advice_heavy);
  }
  else if (BMI<BMI_MIN)
  {
   return getString(R.string.advice_light);
  }
  else
  {
   return getString(R.string.advice_average);
  }
  
  }

4. 在 androidManifest.xml
內要加上 GDD01_child 的activity , 差點忘了! 重要
<activity android:name="GDD01_child"></activity>
      

沒有留言: