本节主要讨论下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的方式,我们为什么不用呢?
分享到:
相关推荐
我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递数据类似,也可以采用前面4种方法,但是一般建议采用Intent对象的方式来返回数据,使用这种方式返回数据,需要使用...
这是介绍了Intent怎样传递数据,传递什么类型的数据,和startactivityforResult,setResult,onactivityResult的用法,请参考:http://blog.csdn.net/forwardyzk/article/details/46620021
使用Context.startActivity() 或 Activity.startActivityForResult(), 传入一个intent来启动一个activity. 使用 Activity.setResult(), 传入一个intent来从activity中返回结果. 将intent对象传给Context.start...
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 ...
从一个Activity启动到另一个Activity可以使用startActivity()方法或者是startActivityForResult()方法 第一种:直接启动一个Activity Intent intent = new Intent(Main.this, SecondActivity.class); startActivity...
本文实例讲述了Android实现Activities之间进行数据传递的方法。分享给大家供大家参考。具体分析如下: 首先,先说明一下Activity的启动及关闭: 1. startActivity(Intent intent); 启动Activity finish(); 结束...
1. 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。 2. 启动Service:可以将Intent对象...
2>startActivityForResult(intent,requestCode) onActivityResult(int requestCode,int resultCode,Intent data) setResult(resultCode,data) 第二种启动方式可以返回结果 代码 FirstActivity.java public ...
startActivityForResult用于两个activity之间的数据传递,Activity1传值给Activity2,Activity2再返回值给Activity1。 第一步:Activity1中:startActivityForResult(Intent intent, Int requestCode) Intent ...
1.启动Activity 将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。 2.启动Service将Intent对象传递给start...
项目地址:https://github.com/fengdai/FragmentMaster 效果图:使用说明:特点:在fragment之间传递数据,类似于startActivityForresult的功能。向右滑动以返回上一个界面自定义切换动画在FragmentMaster中,每一个...
startActivityForResult ——跳转到下一个Activity,而当这个Activity被关闭以后,自动跳转前一个Activity ,并调用onActivityResult( )方法,参数为Intent和requestcode 2. Intent Android基本的设计理念是鼓励...
总结:跨进程访问Activity(访问其他应用程序中的Activity)主要是通过一个Action来完成的,如果要传递数据,还需要...如果要想从调用的Activity中返回数据,就需要使用startActivityForResult方法来启动Activity了。
Intent实现页面之间跳转 1、无返回值 startActivity(intent) 2、有返回值 startActivityForResult(intent,requestCode); onActivityResult(int requestCode,int resultCode,Intent data) setResult(resultCode,...
2个XML布局 布局构思:总体是一个垂直的线性布局 再往里包含2个水平(横向)排列的线性布局 ...然后对按钮监听,并且使用Intent的putExtra设置传递键值对, 再使用startActivityForResult方法(为了一个结果)进行传
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关...
Intent作为四大组件之间传递数据的信使很重要。一般在Activity页面跳转之间有两种方式,一种是直接通过startActivity的方式跳转,不会返回数据;另一种是通过startActivityForResult的方式跳转到另一个页面,也会...
• 一个意图对象是传递给Context.startActivity()或者Activity.startActivityForResult()来启动一个活动或者让一个存在的活动去做某些新的事情。 • 一个意图对象是传递给Context.startService()来发起一个服务或者...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关...
startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER); 按下拍照键后,会返回到你的activity,所以你的activity要在onActivityResult方法里加一个处理, protectedvoidonActivityResult(intrequestCode, ...