Android 小項目之---标准体重测量仪:Bundle对象的实现

我认可有点儿标题党了,呵呵。其实就只是一个Activity跳转页面而后接收值作处理的例子而已。
  废话很少说,直接进入正题。
  首先咱们利用网友用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. @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. mRadioGroup=(RadioGroup)findViewById(R.id.sex); 
  46. height=Double.parseDouble(mEditText.getText().toString());
  47. if(mRadioGroup.getCheckedRadioButtonId()==R.id.M)
  48. {
  49. Sex="M";
  50. }
  51. else
  52. {
  53. Sex="F";
  54. }
  55. Intent intent=new Intent();
  56. intent.setClass(BundleObject.this, Next.class);
  57. Bundle bun=new Bundle();
  58. bun.putDouble("Height", height);
  59. bun.putString("Sex", Sex);
  60. intent.putExtras(bun);
  61. startActivity(intent);
  62. BundleObject.this.finish();
  63. }
  64. });
  65. }
  66. }
复制代码
在此有一点想让你们注意的是:弹出对话框的时候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>
复制代码