转自:http://www.cnblogs.com/sun_catboy/archive/2010/04/11/1709869.html
在android中,我们经常会从一个activity将数据传递到另外的一个activity中,而且还要从另外的activity中获取返回的
数据,
其实在android中有很多方法可以做到,比如使用Application或者是Bundle来进行数据传递.今天就看看使用
Bundle来进
行数据传递的例子.
这个例子里面使用了Bundle从第一个
activity传递了数据到第二个里面,而第二个处理完之后,又将数据返回给了第一个.
具体实现请看代码
---------------------ActivityBundle.java------------------------ import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; public class ActivityBundle extends Activity { private RadioButton rbMan; private RadioButton rbWoman; private EditText editHight; private Button btnOK; private double body_height; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { //结果返回 case RESULT_OK: //获取Bundle的数据 Bundle bl= data.getExtras(); String sex=bl.getString("sex"); if (sex.equals("M")) { rbMan.setChecked(true); } else { rbWoman.setChecked(true); } body_height=bl.getDouble("height"); editHight.setText(""+body_height); break; default: break; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnOK = (Button) findViewById(R.id.btn_calc); rbMan = (RadioButton) findViewById(R.id.radio_man); rbWoman = (RadioButton) findViewById(R.id.radio_woman); editHight = (EditText) findViewById(R.id.text_edit); btnOK.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { body_height = Double.parseDouble(editHight.getText() .toString()); } catch (Exception e) { body_height = 0; } String sex = ""; if (rbMan.isChecked()) { sex = "M"; } else { sex = "F"; } //通过intent跳转到下一个页面. Intent intent = new Intent(); intent.setClass(ActivityBundle.this, ResultActivity.class); //通过Bundle来获取数据,通过key-Value的方式放入数据 Bundle bl = new Bundle(); bl.putDouble("height", body_height); bl.putString("sex", sex); //将Bundle放入Intent传入下一个Activity intent.putExtras(bl); //跳到下一个Activity,并且等待其返回结果 startActivityForResult(intent, 0); //不能够在这个Activity调用了startActivityForResult之后调用finsh() //否则无法接收到返回 } }); } } -----------------------ResultActivity.java---------------------- import java.text.DecimalFormat; import java.text.NumberFormat; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class ResultActivity extends Activity { Bundle bl; Intent intent; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); //获取到上一个页面传过来的Intent intent=this.getIntent(); //获取Intent中的Bundle数据 bl=intent.getExtras(); String sex=bl.getString("sex"); double height=bl.getDouble("height"); String sexText=""; if (sex.equals("M")) { sexText="男性"; } else { sexText="女性"; } String weight=getWeight(sex,height); TextView tv1=(TextView)findViewById(R.id.TextView01); tv1.setText("你是一位"+sexText); TextView tv2=(TextView)findViewById(R.id.TextView02); tv2.setText("你的身高是"+height+"厘米"); TextView tv3=(TextView)findViewById(R.id.TextView03); tv3.setText("你的标准体重是"+weight+"公斤"); btn=(Button)findViewById(R.id.btn_back); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //将intent传会上一个Activity ResultActivity.this.setResult(RESULT_OK, intent); ResultActivity.this.finish(); } }); } private String format(double num) { NumberFormat nf =new DecimalFormat("0.00"); String s=nf.format(num); return s; } 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; } } ---------------mann.xml----------------- <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="4dip" android:paddingLeft="12dip" android:paddingTop="4dip" android:paddingRight="12dip" > <TextView android:id="@+id/title_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:id="@+id/text_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="20sp" android:layout_below="@+id/title_view" android:text="@string/str_text" /> <TextView android:id="@+id/text_weight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_below="@+id/text_title" android:text="@string/str_weight" /> <RadioGroup android:id="@+id/RadioGroup01" android:layout_width="wrap_content" android:layout_below="@+id/text_title" android:layout_toRightOf="@+id/text_weight" android:orientation="horizontal" android:checkedButton="@+id/radio_man" android:layout_height="wrap_content"> <RadioButton android:id="@+id/radio_man" android:text="@string/str_man" /> <RadioButton android:id="@+id/radio_woman" android:text="@string/str_woman" /> </RadioGroup> <TextView android:id="@+id/text_height" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_below="@+id/RadioGroup01" android:text="@string/str_height" /> <EditText android:id="@+id/text_edit" android:layout_width="200dip" android:layout_height="wrap_content" android:layout_below="@+id/RadioGroup01" android:layout_toRightOf="@+id/text_height" android:numeric="decimal" /> <Button android:layout_width="wrap_content" android:text="@string/str_calc" android:layout_below="@+id/text_edit" android:id="@+id/btn_calc" android:layout_toRightOf="@+id/text_height" android:layout_height="wrap_content"> </Button> <TextView android:id="@+id/text_cm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/RadioGroup01" android:textSize="20sp" android:layout_toRightOf="@+id/text_edit" android:text="@string/str_cm" /> </RelativeLayout> ----------------result.xml----------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TableLayout android:id="@+id/TableLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout01" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="20sp"> </TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout02" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"> </TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow03" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout03" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"></TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow04" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout04" android:paddingLeft="12dip" android:paddingRight="12dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"> </TextView> </RelativeLayout> </TableRow> <TableRow android:id="@+id/TableRow05" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RelativeLayout05" android:paddingLeft="40dip" android:paddingRight="40dip" android:paddingTop="10dip" android:paddingBottom="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:text="@string/back_view" android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </RelativeLayout> </TableRow> </TableLayout> </LinearLayout> ---------------AndroidManifest.xml---------------- <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="activity.bundle" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ActivityBundle" 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="ResultActivity"/> </application> </manifest>
相关推荐
当PopupWindow需要向Activity传递数据时,只需调用已实现的接口方法即可。这样做的好处是保持了PopupWindow和Activity之间的解耦。 3. **静态变量**:创建全局静态变量,可以方便地在PopupWindow和Activity之间共享...
理解如何有效地在两者之间传递数据是提升Android开发技能的关键。 ### 1. Bundle对象的介绍 Bundle是一个键值对的数据结构,它类似于Java中的HashMap,可以存储各种基本数据类型(如int、String、boolean等)以及...
在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是十分常见的操作。本文将详细介绍Android中Activity之间数据传递的多种方式及其适用场景。 一、Intent传递数据 Intent是Android系统中...
在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是十分常见的操作。"Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据...
本项目"猴子摘桃"是一个简单的小程序,旨在帮助开发者学习和理解如何在不同的Activity之间进行数据传递,这是Android开发中的一项重要技能。下面将详细阐述在Android中Activity间数据回传的关键知识点。 1. **...
在Android应用开发中,Activity是用户界面的基本单元,它们之间常常需要进行数据交换来实现功能交互。本教程将深入探讨如何在Android的Activity之间传递数据,以及如何在启动的Activity销毁后,主Activity能接收到...
在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本文将详细介绍如何在Android的两个Activity之间进行值的传递,并结合实际案例进行解析。 首先,我们可以通过Intent...
在Android应用开发中,Activity是四大组件之一,它是用户与应用程序交互的主要界面。理解Activity的通信方式和生命周期变化是每个Android开发者必须掌握的基础知识。在本篇内容中,我们将深入探讨Activity之间的通信...
在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是常见的需求。这个"Android例子源码Activity间的数据传递"着重展示了如何在不同的Activity之间有效地传递数据。以下是关于这个主题的详细...
在Android应用开发中,尤其是使用Kotlin作为主要编程语言时,如何有效地在多个Activity之间共享数据是一个常见的挑战。...在Kotlin中使用`ViewModel`进行数据共享,是遵循现代Android开发最佳实践的重要步骤。
// 获取Activity传递的数据 // 使用接收到的数据进行操作 } } ``` 在上述代码中,我们首先创建了一个Bundle对象,并放入了一个整数值。然后,将这个Bundle对象传递给Fragment的setArguments方法。在Fragment的...
在Android应用开发中,Activity是构成应用程序的基本单元,它们之间常常需要进行数据交换来实现功能的联动。本教程将详细讲解如何实现Activity之间的数据传输,特别是如何将一个Activity中的编辑框(EditText)里的...
Activity之间的跳转和数据交互传递是Android开发中的核心技能,对于构建功能丰富的应用至关重要。本篇文章将详细探讨这两个主题。 首先,我们来看Activity之间的跳转。在Android中,启动一个新Activity通常通过...
在安卓应用开发过程中,经常需要在多个`Activity`之间进行数据传递。这种交互对于实现复杂的应用逻辑至关重要,例如用户登录验证、表单填写等场景。本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据...
总结来说,理解和掌握Fragment与Activity之间的数据传输是Android开发中的关键技能。通过多种方法,如Intent、Bundle、构造函数、接口回调、静态方法和成员变量,以及现代架构组件,我们可以灵活地处理数据交互,...
在Android应用开发中,Activity是用户界面的基本单元,它们之间常常需要进行数据交互。本教程以一个具体的实例——“星座测算游戏”来讲解如何在...在Android开发中,理解并熟练运用Activity间的通信技巧是至关重要的。
总结起来,Activity之间的数据传递是Android开发中的核心部分,理解并熟练运用上述方法能帮助开发者构建健壮且用户体验良好的应用程序。无论是在启动Activity时传递简单数据,还是处理复杂的对象和数据流,都有相应...
在Android应用开发中,Activity是构成应用程序的基本单元,它们之间的通信是实现功能交互的重要环节。当我们需要在不同的Activity之间传递数据时,特别是涉及到对象实例的传递,就需要掌握特定的技巧。本篇将深入...
本文将深入探讨如何在两个Activity之间通过Intent进行数据传递。 首先,理解Intent的基本概念。Intent是一个意图对象,它表达了应用程序想要执行的动作(如打开一个网页、拨打电话)以及可能涉及到的数据。在...
在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...