在輸入性別 , 身高及體重後 , 按下計算按鈕 , 在Activity 中運用Intent傳遞資訊並啟動另一個Activity , 並計算BMI值 , 這題重點在兩個Activity的資料傳遞 , 記得要在AndroidManifest.xml 宣告另一支Activity, 以下是程式碼。
package COM.TQC.GDD01; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; public class GDD01 extends Activity { private EditText etheight , etweight; private RadioButton rb1 , rb2; final int RequestCode = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); etheight = (EditText) findViewById(R.id.editText1); etweight = (EditText) findViewById(R.id.editText2); rb1 = (RadioButton) findViewById(R.id.radioButton1); rb1.setChecked(true); rb2 = (RadioButton) findViewById(R.id.radioButton2); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Bundle bundle = new Bundle(); if(rb1.isChecked()) bundle.putString("Sex", "M"); else bundle.putString("Sex", "F"); bundle.putDouble("height", Double.parseDouble(etheight.getText().toString())); bundle.putDouble("weight", Double.parseDouble(etweight.getText().toString())); Intent intent = new Intent(); intent.setClass(GDD01.this, GDD01_child.class); intent.putExtras(bundle); GDD01.this.startActivityForResult(intent, RequestCode); /* 從輸入介面中取出了的身高、體重值,要將身高、體重值傳送給 child_Activity 後作計算 這些附加在 Intent 上的訊息都儲存在 Bundle 物件中 透過「intent.putExtras(bundle)」敘述,將「bundle」 物件附加在 Intent 上, 隨著 Intent 送出而送出 */ } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { case RESULT_OK: Bundle bundle = data.getExtras(); String Sex = bundle.getString("Sex"); double height = bundle.getDouble("height"); double weight = bundle.getDouble("weight"); etheight.setText("" + height); etweight.setText("" + weight); if(Sex.equals("M")) { rb1.setChecked(true); }else { rb2.setChecked(true); } break; default: break; } } }
另一個Activity
package COM.TQC.GDD01 ; import java.text.DecimalFormat; import java.text.NumberFormat; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class GDD01_child extends Activity { Bundle bundle; Intent intent; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mylayout); intent=this.getIntent(); bundle = intent.getExtras(); String Sex = bundle.getString("Sex"); double height = bundle.getDouble("height"); double weight = bundle.getDouble("weight"); String BMI_result = this.getBMI(height,weight); String BMI_advice = this.getAdvice(Sex,height,weight); TextView tvBMI = (TextView) findViewById(R.id.tvBMI); tvBMI.setText("BMI 結果" + BMI_result); TextView tvAdvice = (TextView) findViewById(R.id.tvAdvice); tvAdvice.setText(BMI_advice); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { GDD01_child.this.setResult(RESULT_OK, intent); GDD01_child.this.finish(); } }); } //BMI值格式化 private String format(double num) { NumberFormat NF = new DecimalFormat(".##"); return NF.format(num); } //取得BMI值 private String getBMI (double height, double weight) { double BMI = weight / Math.pow(height, 2); return format(BMI); } //依BMI值取得建議 private String getAdvice (String Sex, double height, double weight) { double doubleBMI = Double.parseDouble(getBMI(height,weight)); String Advice; if(Sex.equals("m")) { if(doubleBMI>25) Advice = (String) getText(R.string.advice_heavy); else if(doubleBMI<20) Advice = (String) getText(R.string.advice_light); else Advice = (String) getText(R.string.advice_average); } else { if(doubleBMI>22) Advice = (String) getText(R.string.advice_heavy); else if(doubleBMI<18) Advice = (String) getText(R.string.advice_light); else Advice = (String) getText(R.string.advice_average); } return Advice; } }
main.xml
mylayout.xml
最後是AndroidManifest.xml
P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....
沒有留言:
張貼留言