【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重

编写一个实例来实现Bundle在Activity之间传递信息和Intent跳转Activity页面的效果。

此实例是让用户输入性别和身高,以此来判断用户的最佳合适的体重(计算最佳体重按照科学数据计算)。

效果如图

【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重

【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重

下面我们来实现这个实例:

res/layout/main.xml(主页面):
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/tableLayout1"
    android:orientation="vertical"
    >
 	<TextView android:layout_width="wrap_content"
 	    android:layout_height="wrap_content"
 	    android:text="计算您的标准体重"/>
 	<TextView android:layout_width="wrap_content"
 	    android:layout_height="wrap_content"
 	    android:text="性别:"/>
 	<RadioGroup android:id="@+id/radioGroup1"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal">
	    <RadioButton android:id="@+id/radio0"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="男"
	        android:checked="true"/>
	     <RadioButton android:id="@+id/radio1"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="女"/>
	</RadioGroup>
 	<LinearLayout 
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal">
	 	<TextView android:layout_width="wrap_content"
	 	    android:layout_height="wrap_content"
	 	    android:text="身高:"/>
	 	<EditText android:layout_width="40pt"
	 	    android:layout_height="wrap_content"
	 	    android:id="@+id/stature"/>
 	</LinearLayout>
 	<Button android:id="@+id/button1"
 	    android:layout_width="wrap_content"
 	    android:layout_height="wrap_content"
 	    android:text="确定"/>
</LinearLayout>


res/layout/main2.xml(结果页面):
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:id="@+id/sex"
	    android:textSize="10pt"
	    android:text="null"/>
	<TextView android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:id="@+id/stature"
	    android:textSize="10pt"
	    android:text="null"/>
	<TextView android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:id="@+id/weight"
	    android:textSize="10pt"
	    android:text="null"/>
</LinearLayout>

保存身高和体重的JavaBean(实现了java.io.Seralizable接口):
(在使用Bundle类传递数据包时,可以放入一个可序列化的对象。这样,当要传递的数据字段比较多时,采用该方法比较方便。在本实例中,为了在Bundle中放入一个可序列化的对象,我们创建了一个可序列化的Java类,方便存储可序列化对象)
Info.java:
package com.example.test;

import java.io.Serializable;

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;
	}
	
}

MainActivity:
package com.example.test;  
  
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
  
public class MainActivity extends Activity {  


    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
      
        Button button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				Info info=new Info();//实例化一个保存输入基本信息的对象
				if("".equals(((EditText)findViewById(R.id.stature)).getText().toString())){
					Toast.makeText(MainActivity.this, "请输入您的身高,否则不能计算!", 1).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.putSerializable("info", info);
				Intent intent=new Intent(MainActivity.this,ContentActivity.class);
				intent.putExtras(bundle);
				startActivity(intent);
			}
		});
	}  
}  

结果页面:
(别忘记在AndroidManifest.xml中注册新的Activity:
在<application></application>标签中添加
<activity 
             android:label="显示结果"
             android:icon="@drawable/ic_launcher"
             android:name=".ContentActivity"/>

)


ContentActivity:
package com.example.test;


import java.text.DecimalFormat;
import java.text.NumberFormat;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;


public class ContentActivity extends Activity {


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main2);
		
		TextView sex=(TextView)findViewById(R.id.sex);
		TextView stature=(TextView)findViewById(R.id.stature);
		TextView weight=(TextView)findViewById(R.id.weight);
		
		Intent intent=this.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())+"公斤");
	}
	
	/* 功能:计算标准体重
	 * @param sex
	 * @param stature
	 * @return */
	private String getWeight(String sex, int 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;
	}
	
}

当我输入男,172cm身高时,得到我的标准体重是.....啊,该减肥了(你学会了吗?)

转载请注明出处:http://blog.csdn.net/acmman/article/details/45127081

上一篇:[2013.9.8网络首发]导入Android4.2源码里的Gallery2和Camera模块至Eclipse全过程


下一篇:【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )(二)