僑光科技大學 蔡存孝老師 解說參考: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);
}
}

沒有留言:
張貼留言