Android 小項目之---标准体重测量仪:Bundle对象的实现(附源码)
2010-05-15 22:09 Terry_龙 阅读(3854) 评论(3) 编辑 收藏 举报我承认有点儿标题党了,呵呵。其实就只是一个Activity跳转页面然后接收值做处理的例子而已。
废话不多说,直接进入正题。
首先我们利用网友用JAVA编写的基于android的可视化GUI布局拖拉工具程序 --DroidDraw。(点击这里下载)布局以下界面:
此页面位于res/layout/main.xml。
制作接收值页面,页面如下:
此页面位于res/layout/mainlayout.xml,到此为止准备工作全部做好了,接下来正式进入 我们的代码实现功能。。
主页面代码位于src/cn.terry/BundleObject.java
代码如下:

2 import android.app.AlertDialog;
3 import android.os.Bundle;
4 import android.view.View;
5 import android.view.View.OnClickListener;
6 import android.widget.*;
7 import android.content.DialogInterface;
8 import android.content.Intent;
9 import android.graphics.Color;
10 public class BundleObject extends Activity {
11 private Button mButton;
12 private EditText mEditText;
13 private RadioGroup mRadioGroup;
14 private double height;
15 private String Sex;
16 /** Called when the activity is first created. */
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.main);
21 mButton=(Button)findViewById(R.id.confirm);
22 mButton.setOnClickListener(new OnClickListener() {
23
24 @Override
25 public void onClick(View v) {
26 // TODO Auto-generated method stub
27 mEditText=(EditText)findViewById(R.id.heigt);
28 if(mEditText.getText().toString().length()==0)
29 {
30 /* AlertDialog builder = new AlertDialog.Builder(BundleObject.this).create();
31 builder.setTitle("提示");
32 builder.setMessage("請輸入您的身高!!");
33
34 builder.show();*/
35
36 new AlertDialog.Builder(BundleObject.this)
37 .setMessage("请輸入您的身高")
38 .setTitle("提示")
39 .setNeutralButton("确定",new DialogInterface.OnClickListener() {
40 @Override
41 public void onClick(DialogInterface dialog, int which) {
42 // TODO Auto-generated method stub
43 mEditText.setHighlightColor(Color.RED);
44 }
45 }).create()
46 .show();
47 return;
48 }
49 mRadioGroup=(RadioGroup)findViewById(R.id.sex);
50 height=Double.parseDouble(mEditText.getText().toString());
51 if(mRadioGroup.getCheckedRadioButtonId()==R.id.M)
52 {
53 Sex="M";
54 }
55 else
56 {
57 Sex="F";
58 }
59 Intent intent=new Intent();
60 intent.setClass(BundleObject.this, Next.class);
61 Bundle bun=new Bundle();
62 bun.putDouble("Height", height);
63 bun.putString("Sex", Sex);
64 intent.putExtras(bun);
65 startActivity(intent);
66 BundleObject.this.finish();
67 }
68 });
69 }
70 }
在此有一点想让大家注意的是:弹出对话框的时候AlertDialog.Builder()这个方法在1.5以上都要加上类名.this 比如 我的页面的名字叫BundleObject.java就必须如下写下
1.5以下的版本直接this即可。。
到此为止己经完成了一半的功能了,那么在Acitivity2(Next.java)要如何接收来自Activity1(BundleObject.java)传递过来的数据呢?试想,在Activity1是以
Bundle封装对象,自然在Activity2亦是以Bundle的方式来解开封装的数据咯;程序中以
这样的方法来取得Bundle对象传递过来的性别与身高,经过计算之后,显示在屏幕上。
废话到此为止,第二个页面的处理程序如下:

2 import java.text.NumberFormat;
3 import android.content.Intent;
4 import android.app.Activity;
5 import android.os.Bundle;
6 import android.view.View;
7 import android.view.View.OnClickListener;
8 import android.widget.*;
9 public class Next extends Activity {
10 private TextView mTextView01;
11 private TextView mTextView02;
12 private Button mButton1;
13 private String Sex;
14 private double Height;
15 private String SextText;
16 public void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 setContentView(R.layout.mainlayout);
19 Bundle bun=this.getIntent().getExtras();
20 Sex=bun.getString("Sex");
21 Height=bun.getDouble("Height");
22 if(Sex.equals("M"))
23 {
24 SextText="男性";
25 }
26 else
27 {
28 SextText="女性";
29 }
30 //取得標準體重
31 String Weight=getWeight(Sex, Height);
32 mTextView01=(TextView)findViewById(R.id.TextView01);
33 mTextView02=(TextView)findViewById(R.id.TextView02);
34 String result = "您是一位" + SextText +
35 "您的身高为:" + Height + "cm";
36 String result2= "您的标准体重为:" + Weight +"千克";
37 mTextView01.setText(result);
38 mTextView02.setText(result2);
39
40 mButton1=(Button)findViewById(R.id.Button03);
41 mButton1.setOnClickListener(new OnClickListener() {
42
43 @Override
44 public void onClick(View v) {
45 // TODO Auto-generated method stub
46 Intent intent=new Intent();
47 intent.setClass(Next.this, BundleObject.class);
48 startActivity(intent);
49 Next.this.finish();
50 }
51 });
52 }
53
54
55
56 //四舍五入的方法
57 private String format(double num)
58 {
59 NumberFormat formatter=new DecimalFormat("0.00");
60 String s=formatter.format(num);
61 return s;
62 }
63 //取得體重
64 public String getWeight(String Sex,double height)
65 {
66 String Weight="";
67 if(Sex.equals("M"))
68 {
69 Weight=format((height-80)*0.7);
70 }
71 else
72 {
73 Weight=format((height-70)*0.6);
74 }
75 return Weight;
76 }
77 }
有一点需要大家注意的是,如果要在新建的项目多新建一个处理类那必需在配置文件为他显示声明,程序才会运行通过,这里配置文件java的命名方式如下:
AndroidManifest.xml 相当于asp.net 的web.config
为了代码的完整性,我顺便把配置文件也贴出来,高手可以直接跳过

2 package="cn.terry"
3 android:versionCode="1"
4 android:versionName="1.0">
5 <application android:icon="@drawable/icon" android:label="@string/app_name">
6 <activity android:name=".BundleObject"
7 android:label="@string/app_name">
8 <intent-filter>
9 <action android:name="android.intent.action.MAIN" />
10 <category android:name="android.intent.category.LAUNCHER" />
11 </intent-filter>
12 </activity>
13
14 <activity android:name=".Next"></activity>
15 </application>
16
17
18 </manifest>
红色字体是新建类的名字。
至此程序大功告成
程序源码:点击下载/Files/TerryBlog/BundleObject.rar
如有不懂的可以加我QQ:285735942 或者Email:terryyhl@gmail.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架