1 概述
Activity之间的跳转主要使用
startActivity(Intent intent);
startActivityForResult(Intent intent,int requestCode);
这两个函数,传递数据的话利用Intent进行传递,负责数据需要配合Bundle使用.这篇文章讲述了如何利用这两个函数在Activity之间的跳转以及传递数据.
2 Activity间跳转
2.1 直接跳转
这里有两个Activity:FirstActivity与SecondActivity,从FirstActivity中跳转到SecondActivity中只需要一个startActivity()即可:
startActivity(new Intent(this,SecondActivity.class));
一般需要在SecondActivity中加上finish()函数,表示这个Activity结束,比如这里直接在SecondActivity的按钮事件里面加上了finish():
2.2 回调
很多情况下需要在FirstActivity跳转到SecondActivity后,在SecondActivity进行相应的操作,如更新数据之类,然后返回FirstActivity,通知FirstActivity执行某些操作,这时候就需要使用startActivityForResult().
startActivityForResult有两个参数,一个是Intent,表示将要跳转的Activity,一个是requestCode(int类型),表示请求码,用于调用Activity的onActivityResult()函数.
如FirstActivity中:
startActivityForResult(new Intent(this,SecondActivity.class),11);
这里11就是请求码,然后在SecondActivity中,使用setResult()函数:
setResult(22,new Intent().putExtra("str","from second activity"));
setResult()接受两个参数,第一个参数表示resultCode,从这个SecondActivity返回的结果码,另一个Intent,表示要返回给FirstActivity的数据.
最后在FirstActivity中重载onActivityResult():
3 Activity间传递数据
3.1 传递普通数据
传递普通类型的数据直接使用Intent的putExtra()即可,putExtra接受两个参数,第一个是一个String,表示键,第二个是值,类型可以是byte,char,short,long等基本类型与这些基本类型组成的数组,当然String也可以.
3.2 传递一组数据
当数据的种类变多时,比如混合了int,String,byte,char等,可以对逐个类型使用putExtra(),但更好的方法是使用Bundle.
Bundle的使用与Intent类似,也是对于不同的类型采用键值对的添加方法,直接putXXX:
3.3 传递对象
如果想要传递的数据是一个对象怎么办?难道对每一个属性都使用getter再放进去吗?
并不是,Bundle提供了一个处理序列化对象的方法: