一、BMIResult.java
创建一个数据处理类
1.确定输入数据:heightString、weightString、sexString
2.创建构造方法。右键,系统自动创建
3.确定输出方法 bodyStateImage,bmiString,bodyStateString,adviceString
4.如何把输入数据转换成输出数据(含涉及到的中间变量)
(一)public class BMIResult implements Serializable
1.声明变量
输入参数
private String heightString;
private String weightString;
private String sexString;
中间变量
private double bmi;
private DecimalFormat format;//格式化数据
double height;
int bodyState; //判断区间,用以确定adviceString等数组的输出
输出参数
private String adviceString;
private String bmiString;
private String bodyStateString;
private int bodyStateImageId;
右键——source——倒数第三个 构造方法
构造方法
public BMIResult(String heightString, String weiString, String sexString) {
super();
this.heightString = heightString;
this.weightString = weiString;
this.sexString = sexString;
format =new DecimalFormat("0.00");
countBmi();
countBodyState();
}
计算bmi
private void countBmi() {
height = Double.valueOf(heightString)/100;
double weight = Double.valueOf(weightString);
bmi=weight/(height*height);
}
判断BodyState的取值
private void countBodyState() {
if (sexString.equals("男")){
if (bmi < 18) {
bodyState = 0...
在get函数中显示文本
public int getBodyStateImageId() {
int [] bodyStateDrawardIds ={
R.drawable.bmi_1,
R.drawable.bmi_2,
R.drawable.bmi_3,
R.drawable.bmi_4,};
return bodyStateDrawardIds[bodyState];}//用bodyState的值控制输出的数据
public String getBodyStateString() {
String[] bodyStateStrings ={"偏瘦状态,请营养","健康状态,请保持","肥胖状态,请减肥","严重肥状态,请立即减肥"};
return "您现在正处于:\n"+ bodyStateStrings[bodyState];}
public String getAdviceString() {
double minWeight = 18 *height*height;
double maxWeight = 22*height*height;
return "建议您的体重保持在"+format.format(minWeight)+"(kg~)"+format.format(maxWeight)+"(kg)";}
二、MainActivity.java
(一)onCreate( )
(二)fineViews();
(三)setLisenter();
1.startTestButton
startTestButton.setOnClickListener中:以result类包含所有数据,intent来传递数据。新建bundle,对接serializable接口。
BMIResult result =new BMIResult(heightString, weightString, sexString);
Intent intent =new Intent(MainActivity.this,BMIResultActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("result", result);//加入对象必须实现serializable接口
intent.putExtras(bundle);//把bundle绑定到intent中。
startActivity(intent);
}
2.resetButton
清空editText。最后不要忘记在fineViews()中添加resetButton = (Button) findViewById(R.id.reset_btn);
resetButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
heightEditText.setText("");
weightEditText.setText("");}});
三、BMIResultActivity.java
(一)声明变量
(二)onCreate( )
用intent传递数据,result类包含所有要用数据。各View调用set方法即可。
Intent intent = getIntent();//getintent,得到传递数据
BMIResult result = (BMIResult)intent.getSerializableExtra("result");//result 类
bmiTextView.setText(result.getBmiString());//显示数据
bodyStateTextView.setText(result.getBodyStateString());
adviceTextView.setText(result.getAdviceString());
bodyStateImageView.setBackgroundResource(result.getBodyStateImageId());
(三)private void setlistener()
返回按钮,用finish( ) 方法返回。不用intent跳转。
private void setlistener() {
returnButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish(); }});}