Acticity 01------startActivity(Intent intent)------>Activity 02
2.Intent的基本作用(Intent还有其它作用,这里只讨论在Activity之间的作用)
Intent是一个对象,有点像一个请求,包含了一组信息:
1)Componentname###
一个Activity想要启动另一个Activity,必须说明哪一个,它的作用就是指明具体的Activity
2)Action###
启动另外一个Activity以后,指定另外一个Activity做什么,官方有很多Action,比如打电话等等
3)Data###
一个Activity向另外一个Activity里面传送了什么样的数据,是一个URI
//
//淡紫色的部分暂时不学习,等到需要的时候,或者学习到后面的时候遇到再回来看看
//4)Catagory
5)Extras###
在一个Activity中存放一些键值对,然后在另一个Activity中把它们取出来。这个东西还很重要。在一个Activity中使用intent.putExtra("key",value)来添加键值对,再在另外一个Activity中通过intent.getStringExtra(“key”)方法
//6)Flags
//
3.在一个Activity中启动另一个Activity的方法
1)首先我见过的Activity的启动基本上都是基于Button(Button有很多种)的,在一个Activity中设置一个Button,点击这个Button,就跳转到另外一个Activity
2)所以Button要有一个监听器,实现OnClickListener方法(即创建一个内部类),比如XXXListener,针对某个按钮特别定义的内部类,里面进行一些操作。创建好了以后在主类中创建一个对象直接引用假如叫做button,然后通过button.setOnClickListener(new XXXListener()); 就可以调用了(详情参见另外一篇关于Button控件的博文)
3)在该监听器里面创建一个Intent对象,然后调用intent里面的setClass(Context packageContext, Class<?> cls)方法,Context在这里差不多就是Activity的意思,这个方法的意思就是从Context指明的这个Activity(假如说名字为Activity01)跳转到Class指定的Activity(假如说名字为Activity02),所以说正确的表达方式就是
setClass(Activity01.this, Activity02.class);
记住,务必加上this和class
4)然后调用当前Activity的startActivity方法,它是Activity中的方法,因为这个Activity01继承了Activity,所以可以直接用该方法,并且把设定好的Intent对象当作参数传进去。表达式为Activity01.this.startActivty(intent);注意:如果想跳转到系统自带的app的activity(或者说跳转到的activity不和这个activity在一个应用中),那么首先创建一个Uri对象,使用Intent带参的构造方法,添加一个系统的action,以及uri,startActivity就行。
举个例子:
Uri uri =Uri.parse("smsto://080000123");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(intent);
4.使用Intent在Activity之间传递数据的基本方法
假如说你已经定义好了一个intent对象,那么你可以使用其中的putExtras()方法,放一个键值对进去,然后在跳转的activity里面取得这个intent,然后调用get开头的方法,传入键的值,从而取得值。