`
yoyotota
  • 浏览: 63315 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Activity之间的数据传递_Intent和startActivityForResult的使用

 
阅读更多
本节主要讨论下Activity之间(A和B)的数据该如何传递。
1、A->B:A跳转到B的同时,将一些数据传递给B
代码实现:很简单,只需在A中生成Intent的时候,将需要传递的数据放到Intent中,如下:(1)A
    Intent intent = new Intent();
			intent.setClass(A.this, B.class);
			Bundle bundle = new Bundle();
			bundle.putString("story", "Tom&jerry");
			intent.putExtra("tag", bundle);
			startActivity(intent);

这里由于只是想传递个“Tom&jerry”给B,所以只需要使用intent.putExtras(String,String)即可,本例中使用bundle封装一次主要是考虑到如果有略微复杂的数据可以使用bundle的方式
(2)B
在B中接受A传递过来的数据,只需在B的oncreate()中如下处理:
   Intent intent = getIntent();
		Bundle bundle = intent.getBundleExtra("tag");
		String storyName = bundle.getString("story");


2、B得到数据后,还想返回A(或者将数据处理一下再返回给A),假设此时A已经finish了,我们想把数据带回A去
我们是不是还得像1一样重新将数据封装一次呢,如果这个数据数据的封装过程是很麻烦的,岂不是很糟糕?答案是否定的。我们可以在A中使用startActivityForResult(intent,0)来启动B,0为下一个activity要返回的依据,并重写onActivityResult方法,如下:
(1)在A中,跳转到B时不使用startActivity(intent)而是使用:
startActivityForResult(intent, 0);

(2)在A中,重写onActivityResult方法
@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		switch (resultCode) {
		case RESULT_OK:
			Bundle bundle = data.getBundleExtra("tag");
			String storyName = bundle.getString("story");
			tv1.setText(storyName);
			break;
		default:
			break;
		}
	}

(3)在B中,使用一个“返回B”的按钮,在其onclick中只需一句
B.this.setResult(RESULT_OK,intent);
即可实现返回A界面,并把数据传回给A,intent中的数据可以为A最开始传过来的数据,也可以是经过B处理过的数据。

其实,在B中直接使用startActivity(B.this,A.class),并在A的oncreate中判断Intent中有没有数据,有的话就带入数据,没有就传入null值,这样的方式也是可以实现,不过略显麻烦,既然系统提供给我们了这种startActivityForResult的方式,我们为什么不用呢?
0
2
分享到:
评论

相关推荐

    Android 从Activity中返回数据

    我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递数据类似,也可以采用前面4种方法,但是一般建议采用Intent对象的方式来返回数据,使用这种方式返回数据,需要使用...

    Intent传递数据

    这是介绍了Intent怎样传递数据,传递什么类型的数据,和startactivityforResult,setResult,onactivityResult的用法,请参考:http://blog.csdn.net/forwardyzk/article/details/46620021

    Android Intent和Intent Filter详解

     使用Context.startActivity() 或 Activity.startActivityForResult(), 传入一个intent来启动一个activity. 使用 Activity.setResult(), 传入一个intent来从activity中返回结果.  将intent对象传给Context.start...

    基于startActivityForResult方法处理两个Activity之间数据传递问题

    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组件之间交互核心Intent用法分析

    从一个Activity启动到另一个Activity可以使用startActivity()方法或者是startActivityForResult()方法 第一种:直接启动一个Activity Intent intent = new Intent(Main.this, SecondActivity.class); startActivity...

    Android实现Activities之间进行数据传递的方法

    本文实例讲述了Android实现Activities之间进行数据传递的方法。分享给大家供大家参考。具体分析如下: 首先,先说明一下Activity的启动及关闭: 1. startActivity(Intent intent); 启动Activity  finish(); 结束...

    详解Android中Intent的使用方法

    1. 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。 2. 启动Service:可以将Intent对象...

    Android使用Intent实现页面跳转

    2>startActivityForResult(intent,requestCode) onActivityResult(int requestCode,int resultCode,Intent data) setResult(resultCode,data) 第二种启动方式可以返回结果 代码 FirstActivity.java public ...

    Android startActivityForResult实例详解

    startActivityForResult用于两个activity之间的数据传递,Activity1传值给Activity2,Activity2再返回值给Activity1。 第一步:Activity1中:startActivityForResult(Intent intent, Int requestCode) Intent ...

    Android开发-Intent使用

    1.启动Activity 将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。 2.启动Service将Intent对象传递给start...

    FragmentMaster-利用Fragment完成的视图切换效果.zip

    项目地址:https://github.com/fengdai/FragmentMaster 效果图:使用说明:特点:在fragment之间传递数据,类似于startActivityForresult的功能。向右滑动以返回上一个界面自定义切换动画在FragmentMaster中,每一个...

    实验四-Android基本组件交互实验.doc

    startActivityForResult ——跳转到下一个Activity,而当这个Activity被关闭以后,自动跳转前一个Activity ,并调用onActivityResult( )方法,参数为Intent和requestcode 2. Intent Android基本的设计理念是鼓励...

    Android中进程之间通信的机制

    总结:跨进程访问Activity(访问其他应用程序中的Activity)主要是通过一个Action来完成的,如果要传递数据,还需要...如果要想从调用的Activity中返回数据,就需要使用startActivityForResult方法来启动Activity了。

    Android编程中Intent实现页面跳转功能详解

    Intent实现页面之间跳转 1、无返回值 startActivity(intent) 2、有返回值 startActivityForResult(intent,requestCode); onActivityResult(int requestCode,int resultCode,Intent data) setResult(resultCode,...

    安卓开发入门基础之Intent双向传递

    2个XML布局 布局构思:总体是一个垂直的线性布局 再往里包含2个水平(横向)排列的线性布局 ...然后对按钮监听,并且使用Intent的putExtra设置传递键值对, 再使用startActivityForResult方法(为了一个结果)进行传

    Google.Android.SDK开发范例大全

     3.10 不同Activity之间的数据传递——Bundle对象的实现   3.11 返回数据到前一个Activity——startActivityForResult方法   3.12 具有交互功能的对话框——AlertDialog窗口   3.13 置换文字颜色的机关...

    有返回结果的页面跳转

    Intent作为四大组件之间传递数据的信使很重要。一般在Activity页面跳转之间有两种方式,一种是直接通过startActivity的方式跳转,不会返回数据;另一种是通过startActivityForResult的方式跳转到另一个页面,也会...

    Android开发指南

    • 一个意图对象是传递给Context.startActivity()或者Activity.startActivityForResult()来启动一个活动或者让一个存在的活动去做某些新的事情。 • 一个意图对象是传递给Context.startService()来发起一个服务或者...

    Google Android SDK开发范例大全 源码

     3.10 不同Activity之间的数据传递——Bundle对象的实现   3.11 返回数据到前一个Activity——startActivityForResult方法   3.12 具有交互功能的对话框——AlertDialog窗口   3.13 置换文字颜色的机关...

    Android 通过Intent调用系统拍照程序出现图片太小的问题解决办法

    startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER); 按下拍照键后,会返回到你的activity,所以你的activity要在onActivityResult方法里加一个处理, protectedvoidonActivityResult(intrequestCode, ...

Global site tag (gtag.js) - Google Analytics