1、布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="计算您的标准体重" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"
android:height="50px"/>
<RadioGroup
android:id="@+id/radioGroup1"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio0"
android:text="男"
android:checked="true"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio1"
android:text="女"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView3"
android:text="身高"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/editText1"
android:layout_width="150px"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textView4"
android:text="cm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"/>
</LinearLayout>
2、编写一个实现java.io.Serializable接口的java类,在该类中创建两个变量,一个用于保存性别,另一个用于保存身高,并为这两个属性添加对应的setter()和getter()方法
public class Info implements Serializable {
private static final long serialVersionUID = 1L;
private String sex = "";//性别
private int stature = 0;//身高
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getStature() {
return stature;
}
public void setStature(int stature) {
this.stature = stature;
}
}
在使用Bundle类传递数据包时,可以放入一个可序列化的对象。这样,当要传递的数据字段比较多时,采用该方法比较方便。
3、onCreate()方法
Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Info info = new Info();//实例化一个保存输入基本信息的对象
if("".equals(((EditText)findViewById(R.id.stature)).getText().toString())){
Toast.makeText(MainActivity.this, "请输入您的身高,否则不能计算!", Toast.LENGTH_SHORT).show();
return;
}
int stature = Integer.parseInt(((EditText)findViewById(R.id.stature)).getText().toString());
RadioGroup sex = (RadioGroup)findViewById(R.id.radioGroup1);//获取设置性别的单选按钮组
//获取单选按钮组的值
for (int i = 0; i < sex.getChildCount(); i++) {
RadioButton r = (RadioButton)sex.getChildAt(i);//根据索引值获取单选按钮
if(r.isChecked()){
info.setSex(r.getText().toString());//获取被选按钮是否被选中
break;
}
}
info.setStature(stature);//设置身高
Bundle bundle = new Bundle();//实例化一个Bundle对象
bundle.putSerializable("info", info);//将输入的基本信息保存到Bundle对象中
Intent intent = new Intent(MainActivity.this,ResultActivity.class);//创建一个Intent对象
intent.putExtras(bundle);//将bundle保存到Intent对象中
startActivity(intent);//启动Intent对应的Activity
}
});
4、result.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
5、ResultActivity.java文件
public class ResultActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);//设置该Activity使用的布局
TextView sex = (TextView)findViewById(R.id.textView1);//获取显示性别的文本框
TextView stature = (TextView)findViewById(R.id.textView2);//获取显示身高的文本框
TextView weight = (TextView)findViewById(R.id.textView3);//获取显示标准体重的文本框
Intent intent = getIntent();//获取Intent对象
Bundle bundle = intent.getExtras();//获取传递的数据包
Info info = (Info)bundle.getSerializable("info");//获取一个可序列化的info对象
sex.setText("您是一位"+info.getSex()+"士");//获取性别并显示到相应文本框中
stature.setText("您的身高是"+info.getStature()+"厘米");//获取身高并显示到相应文本框中
//显示计算后的标准体重
weight.setText("您的标准体重是"+getWeight(info.getSex(),info.getStature())+"公斤");
}
/**
* 计算标准体重
*/
private String getWeight(String sex,float stature){
String weight= "";//保存体重
NumberFormat format = new DecimalFormat();
if(sex.equals("男")){
weight = format.format((stature-80)*0.7);
}else{
weight = format.format((stature-70)*0.6);
}
return weight;
}
}
6、注册ResultActivity
<activity
android:label="结果"
android:icon="@drawable/ic_launcher"
android:name=".ResultActivity"></activity>