Android之Bundle类(浅谈)
2015-11-05 00:00
417 查看
摘要: Android Bundle
引言
当在一个Activity中,启动另一个Activity时,会传递一些数据,。可以将这些数据保存到Bundle对象中,然后通Intent对象的putExtras()方法将要携带的数据
引言
当在一个Activity中,启动另一个Activity时,会传递一些数据,。可以将这些数据保存到Bundle对象中,然后通Intent对象的putExtras()方法将要携带的数据保存到Intent中。
注:Bundle是一个字符串值到各种Parceable类型的映射,用于保存携带的数据包。下面通过一个具体的实例来说明该类的用法.
实例分析-身高计算标准体重
(1)布局文件如下
(2)写一个可序列化的一个类,用于存放bundle数据包
说明:在使用Bundle类传递数据包时,可以放入一个可以序列化的对象。so,当要传递数据字段比较多的时候,采用该方法比较方便。在本实例中,为了在Bundle中放入一个可序列化的对象,我们创建了一个可序列化Java类
(3)创建另一个Activity的布局文件,用于显示结果
(4)在主活动的MainActivity的onCreate()方法中,获取“确定”按钮,并为其添加单击事件监听,在重写的onClick()方法中,实例化一个保存性别和身高的可序列化对象info,一个Bundle对象,一个Intent对象,首先判断身高输入是否为空,为空弹出提示框,不为空,将输入的信息保存到bundle 对象中,并且将bundle对象保存到intent对象中,最后启动startActivity()主要代码如下:
(5)编写返回结果的Acyivity,主要代码如下:
(6)在AndroidMainfest.xml配置新的Activity
THE END!!!
引言
当在一个Activity中,启动另一个Activity时,会传递一些数据,。可以将这些数据保存到Bundle对象中,然后通Intent对象的putExtras()方法将要携带的数据
引言
当在一个Activity中,启动另一个Activity时,会传递一些数据,。可以将这些数据保存到Bundle对象中,然后通Intent对象的putExtras()方法将要携带的数据保存到Intent中。
注:Bundle是一个字符串值到各种Parceable类型的映射,用于保存携带的数据包。下面通过一个具体的实例来说明该类的用法.
实例分析-身高计算标准体重
(1)布局文件如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.eg_wightlengthnumber.MainActivity" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:padding="20px" android:text="计算您的标准体重" /> <LinearLayout android:id="@+id/linearLayout1" android:gravity="center_vertical" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="性别:" /> <RadioGroup android:id="@+id/sex" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="男" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" /> </RadioGroup> </LinearLayout> <LinearLayout android:id="@+id/linearLayout2" android:gravity="center_vertical" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="身高:" /> <EditText android:id="@+id/stature" android:minWidth="100px" android:layout_width="wrap_content" android:layout_height="wrap_content"> </EditText> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="cm" /> </LinearLayout> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确定" /> </LinearLayout>
(2)写一个可序列化的一个类,用于存放bundle数据包
package com.example.eg_wightlengthnumber; import java.io.*; 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; } }
说明:在使用Bundle类传递数据包时,可以放入一个可以序列化的对象。so,当要传递数据字段比较多的时候,采用该方法比较方便。在本实例中,为了在Bundle中放入一个可序列化的对象,我们创建了一个可序列化Java类
(3)创建另一个Activity的布局文件,用于显示结果
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10px" android:text="性别" /> <TextView android:id="@+id/stature" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10px" android:text="身高" /> <TextView android:id="@+id/weight" android:padding="10px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标准体重" /> </LinearLayout>
(4)在主活动的MainActivity的onCreate()方法中,获取“确定”按钮,并为其添加单击事件监听,在重写的onClick()方法中,实例化一个保存性别和身高的可序列化对象info,一个Bundle对象,一个Intent对象,首先判断身高输入是否为空,为空弹出提示框,不为空,将输入的信息保存到bundle 对象中,并且将bundle对象保存到intent对象中,最后启动startActivity()主要代码如下:
Info info=new Info(); //实例化一个保存基本信息的对象 EditText editText=(EditText)findViewById(R.id.stature);//获取输入身高的“EditText” int stature=Integer.parseInt(editText.getText().toString()); RadioGroup sex=(RadioGroup)findViewById(R.id.sex); Bundle bundle=new Bundle(); Intent intent=new Intent(MainActivity.this, ResultActivity.class); if("".equals(stature)){ Toast.makeText(MainActivity.this, "请输入您的身高,否则不能计算", Toast.LENGTH_SHORT).show(); return; }else{ 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.putSerializable("info", info); intent.putExtras(bundle); startActivity(intent); } } });
(5)编写返回结果的Acyivity,主要代码如下:
package com.example.eg_wightlengthnumber; 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 ResultActivity extends Activity { protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.result); TextView sex=(TextView)findViewById(R.id.sex); //获取显示性别的文本框 TextView stature=(TextView)findViewById(R.id.stature); //获取显示身高的文本框 TextView weight=(TextView)findViewById(R.id.weight); //获取显示标准体重的文本框 Intent intent=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())+"公斤"); } /** * 计算标准体重 */ private String getWeight(String sex,float 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; } }
(6)在AndroidMainfest.xml配置新的Activity
<activity android:label="显示结果" android:icon="@drawable/ic_launcher" android:name=".ResultActivity" >
THE END!!!
相关文章推荐
- Android(8)layout_weight
- 自定义ImageView系列 - 区域截图(上)
- Android:通过静态变量传递数据
- android----AndroidStudio错误:Failed to create the Java Virtual Machine
- Android Jsoup:实现HTML解析和Epub解析
- Android Studio: 引用jar及so文件
- android----关于使用Genymotion模拟器产生的错误Unable to establish a connection to adb
- mac android studio 配置 ndk
- [转]Android Message.obtain() 和Handler.obtainMessage()的区别
- android base64/32编码
- 在android中使用自定义组件
- Android应用开发判断一个Activity是否正在运行
- 关于Android文件路径的记录
- Android activity 启动模式 详解
- Android总结——Android四大控件
- Android开发&短信拦截与读取,消息通知Notification
- Android上dip、dp、px、sp等单位说明(转)
- Android 高仿新浪微博底部导航栏,实现双击首页Tab,页面的ListView滚动、刷新
- Android 高仿新浪微博底部导航栏,实现双击首页Tab,页面的ListView滚动、刷新
- 【个人向】Android回调接口的实现方法