- 浏览: 355881 次
- 性别:
- 来自: 北京
最新评论
-
sxchao2008:
心雨心 写道你说的不好用是?你好,在静默卸载系统级别app的时 ...
静默卸载系统软件和第三方软件 -
zhao1111:
请问楼主哪里提供地震的xml文件啊
android解析xml文件 Android DOM解析XML之全球实时地震信息列表 -
yuanmouren1hao:
java字节流(读写文件) -
haiyangzhy:
很好。
ScrollView中嵌入ListView办法 -
gisdaniel:
[/url][url][fla ...
Android中的XML解析-DOM的使用与开发技巧
不同Activity之间的数据传递
Bundle对象的实现
范例说明
在上一个范例里,介绍了如何在Activity中调用另一个Activity,但若需要在调用另外一个Activity的同时传递数据,那么就需要 利用android.os.Bundle对象封装数据的能力,将欲传递的数据或参数,通过Bundle来传递不同Intent之间的数据。
本范例的设计为一个简易表单的范例,在Activity1中收集User输入的数据,在离开Activity1的同时,将User选择的结果传递至下一个Activity2,以一个简单BMI"标准体重计算器"示范如何传递数据到下一个Activity里。
运行结果
(点击查看大图)图3-10 在两个Activity间做数据的传递
范例程序
src/irdc.ex03_10/EX03_10.java
在第一个Activity1主程序中,定义了"性别"选项的RadioGroup以及输入身高 的"EditText",并运用Intent及Bundle对象,在调用Activity2(EX03_10_1)时,同时将数据传入。关于 EditText对象的使用在此仅供参考,详细的应用以及属性方法,将会在未来讨论控件时,再详细解说。
package irdc.ex03_10; /* import相关class */ import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; public class EX03_10 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 载入main.xml Layout */ setContentView(R.layout.main); /* 以findViewById()取得Button对象,并添加onClickListener */ Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /*取得输入的身高*/ EditText et = (EditText) findViewById(R.id.height); double height=Double.parseDouble(et.getText().toString()); /*取得选择的性别*/ String sex=""; RadioButton rb1 = (RadioButton) findViewById(R.id.sex1); if(rb1.isChecked()) { sex="M"; } else { sex="F"; } /*new一个Intent对象,并指定class*/ Intent intent = new Intent(); intent.setClass(EX03_10.this,EX03_10_1.class); /*new一个Bundle对象,并将要传递的数据传入*/ Bundle bundle = new Bundle(); bundle.putDouble("height",height); bundle.putString("sex",sex); /*将Bundle对象assign给Intent*/ intent.putExtras(bundle); /*调用Activity EX03_10_1*/ startActivity(intent); } }); } }
src/irdc.ex03_10/EX03_10_1.java
那么,在Activity2(EX03_10_1)要如何接收来自Activity1(EX03_10)传递来的数据呢?试想,在 Activity1是以Bundle封装对象,自然在Activity2亦是以Bundle的方式解开封装的数据;程序中以 getIntent().getExtras() 方法取得随着Bundle对象传递过来的性别与身高,经过计算之后,显示在屏幕上。
package irdc.ex03_10; /* import相关class */ import java.text.DecimalFormat; import java.text.NumberFormat; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class EX03_10_1 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 加载main.xml Layout */ setContentView(R.layout.myalyout); /* 取得Intent中的Bundle对象 */ Bundle bunde = this.getIntent().getExtras(); /* 取得Bundle对象中的数据 */ String sex = bunde.getString("sex"); double height = bunde.getDouble("height"); /* 判断性别 */ String sexText=""; if(sex.equals("M")) { sexText="男性"; } else { sexText="女性"; } /* 取得标准体重 */ String weight=this.getWeight(sex, height); /* 设置输出文字 */ TextView tv1=(TextView) findViewById(R.id.text1); tv1.setText("你是一位"+sexText+"\n你的身高是" +height+"厘米\n你的标准体重是"+weight+"公斤"); } /* 四舍五入的method */ private String format(double num) { NumberFormat formatter = new DecimalFormat("0.00"); String s=formatter.format(num); return s; } /* 以findViewById()取得Button对象,并添加onClickListener */ private String getWeight(String sex,double height) { String weight=""; if(sex.equals("M")) { weight=format((height-80)*0.7); } else { weight=format((height-70)*0.6); } return weight; } }
res/layout/mylayout.xml
mylayout.xml为(EX03_10_1)的Layout,定义了显示计算结果的TextView。
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_x="50px" android:layout_y="72px" > </TextView> </AbsoluteLayout>
AndroidManifest.xml
由于本范例中有两个Activity,所以文件中必须有两个activity的声明,否则系统将无法运行,请看以下的描述。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="irdc.ex03_10" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".EX03_10" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="EX03_10_1"></activity> </application> </manifest>
扩展学习
Bundle对象针对了不同的数据类型提供了许多的方法,例如,此范例中传递String类型的数据,使用的方法为Bundle.putString(stringName,stringValue):
bundle.putDouble("sex",sex);
而要传递Double类型的数据,使用的方法为Bundle.putDouble(doubleName,doubleValue),如下:
bundle.putString("height",height);
反之,若要由Bundle对象中取出数据,则使用Bundle.getString(stringName)、Bundle.getDouble(doubleName) 等相对应的方法即可。
除了上述简单的传递类型之外,尚有String[] 与ArrayList<String> 等封装的方式可供使用
参考。
来源:http://hi.baidu.com/lfcaolibin/blog/item/1e29f7546d7328cfb745aef5.html
Bundle对象的实现
范例说明
在上一个范例里,介绍了如何在Activity中调用另一个Activity,但若需要在调用另外一个Activity的同时传递数据,那么就需要 利用android.os.Bundle对象封装数据的能力,将欲传递的数据或参数,通过Bundle来传递不同Intent之间的数据。
本范例的设计为一个简易表单的范例,在Activity1中收集User输入的数据,在离开Activity1的同时,将User选择的结果传递至下一个Activity2,以一个简单BMI"标准体重计算器"示范如何传递数据到下一个Activity里。
运行结果
(点击查看大图)图3-10 在两个Activity间做数据的传递
范例程序
src/irdc.ex03_10/EX03_10.java
在第一个Activity1主程序中,定义了"性别"选项的RadioGroup以及输入身高 的"EditText",并运用Intent及Bundle对象,在调用Activity2(EX03_10_1)时,同时将数据传入。关于 EditText对象的使用在此仅供参考,详细的应用以及属性方法,将会在未来讨论控件时,再详细解说。
package irdc.ex03_10; /* import相关class */ import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; public class EX03_10 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 载入main.xml Layout */ setContentView(R.layout.main); /* 以findViewById()取得Button对象,并添加onClickListener */ Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /*取得输入的身高*/ EditText et = (EditText) findViewById(R.id.height); double height=Double.parseDouble(et.getText().toString()); /*取得选择的性别*/ String sex=""; RadioButton rb1 = (RadioButton) findViewById(R.id.sex1); if(rb1.isChecked()) { sex="M"; } else { sex="F"; } /*new一个Intent对象,并指定class*/ Intent intent = new Intent(); intent.setClass(EX03_10.this,EX03_10_1.class); /*new一个Bundle对象,并将要传递的数据传入*/ Bundle bundle = new Bundle(); bundle.putDouble("height",height); bundle.putString("sex",sex); /*将Bundle对象assign给Intent*/ intent.putExtras(bundle); /*调用Activity EX03_10_1*/ startActivity(intent); } }); } }
src/irdc.ex03_10/EX03_10_1.java
那么,在Activity2(EX03_10_1)要如何接收来自Activity1(EX03_10)传递来的数据呢?试想,在 Activity1是以Bundle封装对象,自然在Activity2亦是以Bundle的方式解开封装的数据;程序中以 getIntent().getExtras() 方法取得随着Bundle对象传递过来的性别与身高,经过计算之后,显示在屏幕上。
package irdc.ex03_10; /* import相关class */ import java.text.DecimalFormat; import java.text.NumberFormat; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class EX03_10_1 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 加载main.xml Layout */ setContentView(R.layout.myalyout); /* 取得Intent中的Bundle对象 */ Bundle bunde = this.getIntent().getExtras(); /* 取得Bundle对象中的数据 */ String sex = bunde.getString("sex"); double height = bunde.getDouble("height"); /* 判断性别 */ String sexText=""; if(sex.equals("M")) { sexText="男性"; } else { sexText="女性"; } /* 取得标准体重 */ String weight=this.getWeight(sex, height); /* 设置输出文字 */ TextView tv1=(TextView) findViewById(R.id.text1); tv1.setText("你是一位"+sexText+"\n你的身高是" +height+"厘米\n你的标准体重是"+weight+"公斤"); } /* 四舍五入的method */ private String format(double num) { NumberFormat formatter = new DecimalFormat("0.00"); String s=formatter.format(num); return s; } /* 以findViewById()取得Button对象,并添加onClickListener */ private String getWeight(String sex,double height) { String weight=""; if(sex.equals("M")) { weight=format((height-80)*0.7); } else { weight=format((height-70)*0.6); } return weight; } }
res/layout/mylayout.xml
mylayout.xml为(EX03_10_1)的Layout,定义了显示计算结果的TextView。
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_x="50px" android:layout_y="72px" > </TextView> </AbsoluteLayout>
AndroidManifest.xml
由于本范例中有两个Activity,所以文件中必须有两个activity的声明,否则系统将无法运行,请看以下的描述。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="irdc.ex03_10" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".EX03_10" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="EX03_10_1"></activity> </application> </manifest>
扩展学习
Bundle对象针对了不同的数据类型提供了许多的方法,例如,此范例中传递String类型的数据,使用的方法为Bundle.putString(stringName,stringValue):
bundle.putDouble("sex",sex);
而要传递Double类型的数据,使用的方法为Bundle.putDouble(doubleName,doubleValue),如下:
bundle.putString("height",height);
反之,若要由Bundle对象中取出数据,则使用Bundle.getString(stringName)、Bundle.getDouble(doubleName) 等相对应的方法即可。
除了上述简单的传递类型之外,尚有String[] 与ArrayList<String> 等封装的方式可供使用
参考。
来源:http://hi.baidu.com/lfcaolibin/blog/item/1e29f7546d7328cfb745aef5.html
发表评论
-
查看Android应用包名package和入口activity名称
2014-08-05 16:20 2237使用android自动化测试工具monkeyrunner启动 ... -
设置默认应用
2014-05-15 11:46 1769setDefaultLauncher(); ... -
Android之APK文件签名——keytool和jarsigner
2012-10-10 14:06 1924一、生成密钥库将位置定位在jdk的bin文件中,输入以下命名行 ... -
Android中应用程序如何获得系统签名权限
2012-08-21 14:18 0有些库的使用条件比较苛刻,要求同一签名的程序才可以获得访问权。 ... -
Android中应用程序如何获得系统签名权限
2012-08-21 14:18 0有些库的使用条件比较苛刻,要求同一签名的程序才可以获得访问权。 ... -
Android权限共享UID和签名(转)
2012-08-21 14:17 1815共享UID 安装在设备中的每一个Android包文件(.ap ... -
android小结
2012-04-17 10:21 16811.获取屏幕的分辨率 在 Activity 里使 ... -
TextView实现电话、网址链接
2012-03-22 17:39 1710TextView是android中一个组件,具有autolin ... -
Android Eclipse JNI 调用 .so文件加载
2012-03-01 18:41 6021http://blog.sina.com.cn/s/blo ... -
Gallery加小点效果实现
2012-02-15 16:15 1744大家好: 心雨心今天又跟大家见面了 今天发布的是Gal ... -
如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09
2011-12-21 13:39 1680问题概述: 在导入一个app后提示如下错误(出现该问题, ... -
Android Google Map API 开发基础知识
2011-12-16 17:25 1851开发基于谷歌地图的应用和普通的android应用差不多都要 ... -
使一段字符串显示不同的颜色
2011-12-12 15:09 2739一种:字体颜色改变 String appna ... -
droid系统中使用TelephonyManager类来获取imei号和其他手机信息
2011-11-22 11:15 14896在AndroidManifest.xml文件中增加& ... -
CategoryAdapter控件
2011-11-17 10:50 1627使用方法: private Cate ... -
(转)Android开发:在EditText中关闭软键盘
2011-11-04 13:45 152231、EditText有焦点(focusable为true)阻止 ... -
获取未安装的APK图标
2011-09-01 10:38 1512网上关于"获取未安装的APK图 ... -
android ListView的美化涉及到的一些属性
2011-08-26 10:44 2414用心的朋友应该会发现,listview中在设置了背景之后。会有 ... -
ScrollView中嵌入ListView办法
2011-08-11 17:13 2320①layout布局代码: <ScrollView an ... -
android 混淆 去除第三方jar
2011-06-10 19:05 12576编译与反编译,一对相辅相成的 ...
相关推荐
在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在...
本文将详细介绍Android中Activity之间数据传递的多种方式及其适用场景。 一、Intent传递数据 Intent是Android系统中用于启动组件(如Activity)的一种消息对象,同时也可以用来在组件间传递数据。Intent的数据传递...
在Android开发中,Activity之间的数据传递是一个常见的任务,特别是在处理文件...开发者需要了解如何创建Intent,如何处理文件路径,以及如何在不同Activity之间共享数据,同时要注意处理Android的不同存储权限策略。
"Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据类型、字符串、数组、集合以及自定义对象等。在Android中,Intent不仅用于启动新的Activity,还...
1. **Intent**:虽然Intent主要用于Activity之间的数据传递,但也可以用在PopupWindow与Activity之间。例如,当用户在PopupWindow中做出选择后,可以通过Intent将数据传回Activity,然后在Activity中处理这些数据。...
在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本篇文章将详细讲解如何在Android的两个Activity之间传递参数,并通过给出的`LoginActivity.java`和`MainActivity.java...
在多Activity的应用中,可能需要在不同的Activity之间共享数据,这些数据可能是简单的基本类型,如字符串、整数,也可能是复杂的自定义对象。Android的Intent系统提供了这种数据传递的能力,但默认只能处理基本类型...
资源包括如何在一个activity A里激活另一个activity B。...然后在两个activity之间用handler传输数据。在activity A里定义全局变量handler,用sendMessage来发数据,在handler里数据以消息队列的方式发送。
在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本教程将详细讲解如何在两个Activity之间实现数据传递,主要涉及三种常见方法:Intent的Extra数据、Bundle对象以及使用...
"Activity review activity之间的数据传递"这个主题聚焦于如何在不同的Activity之间有效地传递信息。理解并熟练掌握这一技能对于构建功能丰富的Android应用至关重要。 一、Intent:数据传递的主要工具 在Android中...
本教程将深入探讨如何利用BroadcastReceiver在两个不同的Activity之间传递数据。 首先,理解BroadcastReceiver的基本概念。BroadcastReceiver是Android系统中的一个监听器,它可以在后台运行,监听特定的Intent广播...
当我们需要在不同的Activity之间传递数据时,特别是涉及到对象实例的传递,就需要掌握特定的技巧。本篇将深入探讨如何在Android中进行Activity间的对象传递,并以"Test001"为例进行演示。 一、Intent:数据传递的...
当我们需要在两个Activity之间传递数据时,通常有多种方法,如Intent、Bundle、静态变量、文件、数据库等。本教程将聚焦于一种更为灵活的方式:通过接口进行数据传递。这种方式在某些复杂场景下特别有用,例如当数据...
在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...
Activity之间的通信是Android系统中不可或缺的一部分,本教程将详细讲解如何在不同的Activity之间进行简单数据传递。 一、基本概念 Activity间的数据传递主要通过Intent进行。Intent不仅用于启动新的Activity,还能...
本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据以及如何实现数据回传。 #### Activity间数据传递 假设我们有两个`Activity`:A和B。我们需要从A向B传递一些数据,以便B能够根据这些数据执行特定的...
或者,如果使用ContentProvider,需要在AndroidManifest.xml中注册,并在发送和接收Activity之间通过Uri传递。 这三种方法各有优缺点,开发者应根据实际需求和图片大小来选择合适的方式。在处理图片传递时,还需...
本篇将深入探讨Fragment与Activity之间的数据传递,以及如何通过setArguments方法实现这一过程。 首先,了解Fragment的基本概念。Fragment具有自己的生命周期,可以有自己的布局,也可以处理用户事件。它可以在不同...
android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看>http://blog.csdn.net/js931178805/article/details/8268144
本教程将深入探讨如何在Android的Activity之间传递数据,以及如何在启动的Activity销毁后,主Activity能接收到返回的结果。 首先,我们要了解Activity间的启动模式。Android提供了四种启动模式:标准模式(Standard...