首先我們利用網友用JAVA編寫的基於android的可視化GUI布局拖拉工具程序 --DroidDraw。(點擊這裡下載)布局以下界面:
此頁面位於res/layout/main.xml。
制作接收值頁面,頁面如下:
此頁面位於res/layout/mainlayout.xml,到此為止准備工作全部做好了,接下來正式進入 我們的代碼實現功能。。
主頁面代碼位於src/cn.terry/BundleObject.java
代碼如下:
1 import android.app.Activity;
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就必須如下寫下
AlertDialog.Builder(BundleObject.this)
1.5以下的版本直接this即可。。
到此為止己經完成了一半的功能了,那麼在Acitivity2(Next.java)要如何接收來自Activity1(BundleObject.java)傳遞過來的數據呢?試想,在Activity1是以
Bundle封裝對象,自然在Activity2亦是以Bundle的方式來解開封裝的數據咯;程序中以
Bundle bun=this.getIntent().getExtras();
這樣的方法來取得Bundle對象傳遞過來的性別與身高,經過計算之後,顯示在屏幕上。
廢話到此為止,第二個頁面的處理程序如下:
1 import java.text.DecimalFormat;
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
為了代碼的完整性,我順便把配置文件也貼出來,高手可以直接跳過
代碼
1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
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