其实就只是一个Activity跳转页面然后接收值做处理的例子而已。
  废话不多说,直接进入正题。
  首先我们利用网友用JAVA编写的基于android的可视化GUI布局拖拉工具程序 –DroidDraw。布局以下界面:
此页面位于res/layout/main.xml。
制作接收值页面,页面如下:

%title插图%num
此页面位于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. @Override
  24. public void onClick(View v) {
  25. // TODO Auto-generated method stub
  26. mEditText=(EditText)findViewById(R.id.heigt);
  27. if(mEditText.getText().toString().length()==0)
  28. {
  29. /* AlertDialog builder = new AlertDialog.Builder(BundleObject.this).create();
  30. builder.setTitle(“提示”);
  31. builder.setMessage(“請輸入您的身高!!”);
  32. builder.show();*/
  33. new AlertDialog.Builder(BundleObject.this)
  34. .setMessage(“请輸入您的身高”)
  35. .setTitle(“提示”)
  36. .setNeutralButton(“确定”,new DialogInterface.OnClickListener() {
  37. @Override
  38. public void onClick(DialogInterface dialog, int which) {
  39. // TODO Auto-generated method stub
  40. mEditText.setHighlightColor(Color.RED);
  41. }
  42. }).create()
  43. .show();
  44. return;
  45. }
  46. mRadioGroup=(RadioGroup)findViewById(R.id.sex);
  47. height=Double.parseDouble(mEditText.getText().toString());
  48. if(mRadioGroup.getCheckedRadioButtonId()==R.id.M)
  49. {
  50. Sex=”M”;
  51. }
  52. else
  53. {
  54. Sex=”F”;
  55. }
  56. Intent intent=new Intent();
  57. intent.setClass(BundleObject.this, Next.class);
  58. Bundle bun=new Bundle();
  59. bun.putDouble(“Height”, height);
  60. bun.putString(“Sex”, Sex);
  61. intent.putExtras(bun);
  62. startActivity(intent);
  63. BundleObject.this.finish();
  64. }
  65. });
  66. }
  67. }

在此有一点想让大家注意的是:弹出对话框的时候AlertDialog.Builder()这个方法在1.5以上都要加上类名.this 比如 我的页面的名字叫BundleObject.java就必须如下写下

  1. AlertDialog.Builder(BundleObject.this)

复制代码

1.5以下的版本直接this即可。。 到此为止己经完成了一半的功能了,那么在Acitivity2(Next.java)要如何接收来自Activity1(BundleObject.java)传递过来的数据呢?试想,在Activity1是以Bundle封装对象,自然在Activity2亦是以Bundle的方式来解开封装的数据咯;程序中以

  1. 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. mButton1=(Button)findViewById(R.id.Button03);
  40. mButton1.setOnClickListener(new OnClickListener() {
  41. @Override
  42. public void onClick(View v) {
  43. // TODO Auto-generated method stub
  44. Intent intent=new Intent();
  45. intent.setClass(Next.this, BundleObject.class);
  46. startActivity(intent);
  47. Next.this.finish();
  48. }
  49. });
  50. }
  51. //四舍五入的方法
  52. private String format(double num)
  53. {
  54. NumberFormat formatter=new DecimalFormat(“0.00”);
  55. String s=formatter.format(num);
  56. return s;
  57. }
  58. //取得體重
  59. public String getWeight(String Sex,double height)
  60. {
  61. String Weight=””;
  62. if(Sex.equals(“M”))
  63. {
  64. Weight=format((height-80)*0.7);
  65. }
  66. else
  67. {
  68. Weight=format((height-70)*0.6);
  69. }
  70. return Weight;
  71. }
  72. }

有一点需要大家注意的是,如果要在新建的项目多新建一个处理类那必需在配置文件为他显示声明,程序才会运行通过,这里配置文件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. <activity android:name=”.Next”></activity>
  14. </application>
  15. </manifest>