僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC104.pdf
首先進入AndroidMinifest.xml目錄add兩個Activity GDD01和GDD01_child (user permission)
定義兩個僅可單選的 RadioButton (必須選擇 Radio Group 右鍵Orientation > Horizontal 砍掉多的RadioButton )
兩個 EditText、一個 Button 、其餘TextView
如畫面所示
xml
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android1="http://schemas.android.com/apk/res/android" android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="2dp" android:layout_y="51dp" android:text="@string/text3" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="-2dp" android:layout_y="96dp" android:text="@string/text1" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="3dp" android:layout_y="150dp" android:text="@string/text2" /> <RadioGroup android1:id="@+id/radioGroup1" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:layout_x="84dp" android1:layout_y="38dp" android1:orientation="horizontal" > <RadioButton android1:id="@+id/rb1" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:checked="true" android1:text="男性" /> <RadioButton android1:id="@+id/rb2" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:text="女性" /> </RadioGroup> <EditText android1:id="@+id/height" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:layout_x="83dp" android1:layout_y="90dp" android1:ems="10" android1:inputType="numberDecimal" > <requestFocus /> </EditText> <EditText android1:id="@+id/weight" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:layout_x="80dp" android1:layout_y="144dp" android1:ems="10" android1:inputType="numberDecimal" /> <Button android1:id="@+id/btn" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:layout_x="125dp" android1:layout_y="200dp" android1:text="計算" /> <TextView android1:id="@+id/textView1" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:layout_x="8dp" android1:layout_y="3dp" android1:text="@string/title" /> </AbsoluteLayout>GDD01.java - 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; private EditText etweight; private RadioButton rb1; private RadioButton rb2; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { //從輸入介面中取出了的身高、體重值,要將身高、體重值傳送給 child_Activity 後作計算 etheight=(EditText)findViewById(R.id.height); etweight=(EditText)findViewById(R.id.weight); rb1=(RadioButton)findViewById(R.id.rb1); rb2=(RadioButton)findViewById(R.id.rb2); String sex; if(rb1.isChecked()) sex="M"; else sex="W"; //這些附加在 Intent 上的訊息都儲存在 Bundle 物件中 Intent intent = new Intent(GDD01.this, GDD01_child.class); Bundle bundle = new Bundle(); bundle.putString("Sex", sex); bundle.putDouble("height", Double.parseDouble(etheight.getText().toString())); bundle.putDouble("weight", Double.parseDouble(etweight.getText().toString())); //透過「intent.putExtras(bundle)」敘述,將「bundle」 物件附加在 Intent 上,隨著 Intent 送出而送出 intent.putExtras(bundle); startActivityForResult(intent, 0); } }); } @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; } } }GDD01_child.java - Activity主體
package COM.TQC.GDD01 ; import java.text.DecimalFormat; 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_result); TextView tvAdvice=(TextView) findViewById(R.id.tvAdvice); tvAdvice.setText(BMI_advice); Button b1 = (Button) findViewById(R.id.btn); 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) { return String.format("%.2f", num); } //取得BMI值 private String getBMI (double height, double weight) { return this.getString(R.string.report_result)+ " "+format(weight/(height*height)); } //依BMI值取得建議 private String getAdvice (String Sex, double height, double weight) { double bmi = weight / (height * height); double max_bmi, min_bmi; if(Sex=="M"){ max_bmi=25; min_bmi=22; }else{ max_bmi=22; min_bmi=18; } if(bmi>max_bmi) return this.getString(R.string.advice_heavy); else if(bmi<min_bmi) return this.getString(R.string.advice_light); else return this.getString(R.string.advice_average); } }
沒有留言:
張貼留言