`
skcceclipse
  • 浏览: 23340 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android 开发之activity之间传递数据

阅读更多

转自: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> 

 

分享到:
评论

相关推荐

    Android PopupWindow与Activity之间的数据传递.zip

    当PopupWindow需要向Activity传递数据时,只需调用已实现的接口方法即可。这样做的好处是保持了PopupWindow和Activity之间的解耦。 3. **静态变量**:创建全局静态变量,可以方便地在PopupWindow和Activity之间共享...

    android bundle和activity之间交换数据

    理解如何有效地在两者之间传递数据是提升Android开发技能的关键。 ### 1. Bundle对象的介绍 Bundle是一个键值对的数据结构,它类似于Java中的HashMap,可以存储各种基本数据类型(如int、String、boolean等)以及...

    Android-Activity之间数据传递的多种方式

    在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是十分常见的操作。本文将详细介绍Android中Activity之间数据传递的多种方式及其适用场景。 一、Intent传递数据 Intent是Android系统中...

    Activity之间传递数据

    在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是十分常见的操作。"Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据...

    Android开发 猴子摘桃小项目——学习Activity之间的数据回传

    本项目"猴子摘桃"是一个简单的小程序,旨在帮助开发者学习和理解如何在不同的Activity之间进行数据传递,这是Android开发中的一项重要技能。下面将详细阐述在Android中Activity间数据回传的关键知识点。 1. **...

    android Activity之间的数据传递

    在Android应用开发中,Activity是用户界面的基本单元,它们之间常常需要进行数据交换来实现功能交互。本教程将深入探讨如何在Android的Activity之间传递数据,以及如何在启动的Activity销毁后,主Activity能接收到...

    Android 两个Activity之间传值

    在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本文将详细介绍如何在Android的两个Activity之间进行值的传递,并结合实际案例进行解析。 首先,我们可以通过Intent...

    Android四大组件——Activity(一)Activity之间通信及其生命周期变化

    在Android应用开发中,Activity是四大组件之一,它是用户与应用程序交互的主要界面。理解Activity的通信方式和生命周期变化是每个Android开发者必须掌握的基础知识。在本篇内容中,我们将深入探讨Activity之间的通信...

    Android例子源码Activity间的数据传递

    在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是常见的需求。这个"Android例子源码Activity间的数据传递"着重展示了如何在不同的Activity之间有效地传递数据。以下是关于这个主题的详细...

    使用ViewModel解决多个Activity数据共享问题(Kotlin版)

    在Android应用开发中,尤其是使用Kotlin作为主要编程语言时,如何有效地在多个Activity之间共享数据是一个常见的挑战。...在Kotlin中使用`ViewModel`进行数据共享,是遵循现代Android开发最佳实践的重要步骤。

    Fragment 与 Activity之间传递数据

    // 获取Activity传递的数据 // 使用接收到的数据进行操作 } } ``` 在上述代码中,我们首先创建了一个Bundle对象,并放入了一个整数值。然后,将这个Bundle对象传递给Fragment的setArguments方法。在Fragment的...

    实现Activity之间的数据传输

    在Android应用开发中,Activity是构成应用程序的基本单元,它们之间常常需要进行数据交换来实现功能的联动。本教程将详细讲解如何实现Activity之间的数据传输,特别是如何将一个Activity中的编辑框(EditText)里的...

    Android Activity之间的跳转以及数据的交互传递

    Activity之间的跳转和数据交互传递是Android开发中的核心技能,对于构建功能丰富的应用至关重要。本篇文章将详细探讨这两个主题。 首先,我们来看Activity之间的跳转。在Android中,启动一个新Activity通常通过...

    安卓开发-Activity间数据传递和回传

    在安卓应用开发过程中,经常需要在多个`Activity`之间进行数据传递。这种交互对于实现复杂的应用逻辑至关重要,例如用户登录验证、表单填写等场景。本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据...

    Fragment与Activity 之间的数据传输

    总结来说,理解和掌握Fragment与Activity之间的数据传输是Android开发中的关键技能。通过多种方法,如Intent、Bundle、构造函数、接口回调、静态方法和成员变量,以及现代架构组件,我们可以灵活地处理数据交互,...

    【Android开发】不同Activity之间的数据回传实例(二)星座测算游戏

    在Android应用开发中,Activity是用户界面的基本单元,它们之间常常需要进行数据交互。本教程以一个具体的实例——“星座测算游戏”来讲解如何在...在Android开发中,理解并熟练运用Activity间的通信技巧是至关重要的。

    Activity review activity之间的数据传递

    总结起来,Activity之间的数据传递是Android开发中的核心部分,理解并熟练运用上述方法能帮助开发者构建健壮且用户体验良好的应用程序。无论是在启动Activity时传递简单数据,还是处理复杂的对象和数据流,都有相应...

    Activity之间传递对象的Demo

    在Android应用开发中,Activity是构成应用程序的基本单元,它们之间的通信是实现功能交互的重要环节。当我们需要在不同的Activity之间传递数据时,特别是涉及到对象实例的传递,就需要掌握特定的技巧。本篇将深入...

    Android开发 两个Activity之间通过Intent跳转传值

    本文将深入探讨如何在两个Activity之间通过Intent进行数据传递。 首先,理解Intent的基本概念。Intent是一个意图对象,它表达了应用程序想要执行的动作(如打开一个网页、拨打电话)以及可能涉及到的数据。在...

    通过Intent实现Activity之间的切换,并传递数据

    在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...

Global site tag (gtag.js) - Google Analytics