Intent--第一行代码

使用Intent在活动中跳转:

1,显示Intent

新建活动

 

 

添加布局

 

 

SecondActivity不是主活动,不需要<intent-filter>标签里的内容

 

IntentAndroid程序中各组件之间进行交互的一种方式。

不仅可指明当前组件想要执行的动作,还可以在不同组件之间传递数据

一般被用于启动活动,启动服务以及发送广播等场景

 

Intent有多个构造函数的重载,

Intent(Context packageContext, Class<?>cls)

参数1Context要求提供一个启动活动的上下文

参数2Class指定想要启动的目标活动

作用:构建出Intent的意图

Activity类中提供一个startActivity()方法,专门用于启动活动的,接受一个Intent参数,

 

点击button2,返回button1界面

 

 

2,隐式Intent

不明确指出将要去启动哪一个活动,而是指定了一系列更为抽象的actioncategory等信息

然后交给系统去分析这个intent,并帮我们找到合适的活动去启动

 

 

<action>标签指明了当前活动可以响应com.quanwei1.yehowah.activitytest.ACTION_START这个action

<category>标签包含一些附加信息,android.intent.category.DEFAULT是一种默认的category

在调用startActivity()方法时自动将这个category添加到intent

只有<action><category>同时能够匹配到Intent中指定的actioncategory时,才能响应intent

 

若多个categoryintent只有一个默认的category

 

 

3,隐式Intent其他用法

隐式intent,不仅要启动本身程序内的活动,还可启动其他程序的活动,

这使得Android多个应用程序之间的功能共享成为了可能

 

 

Intent.ACTION_VIEW这是一个Android系统内置的动作,其常量值为Android.intent.action.VIEW

然后通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象

调用IntentsetDate()方法将这个Uri对象传递进去

 

4,向下一个活动传递数据

在启动活动时传递数据,Intent中的putExtra方法的重载,可将要传输的数据暂存在Intent中,启动了

另一个活动后,只需要把这些数据从Intent中取出来就可以了

 

FirstActivity.java中修改

 

 

putExtra("extra_data",data);

参数1:键,用于后面从Intent中取值

参数2:真正要传递的数据

 

SecondActivity.java中修改

 

getIntent()方法获取用于启动SecondActivityIntent

然后调用getStringExtra()方法获取传递数据,

如果数据是整型,getIntExtra()

如果数据是布尔类型,getBooleanExtra()

 

点击button1出现调试打印数据,然后跳转到button2

4,返回数据给上一个活动

之前的Button2直接关闭,然后进入Button1活动中,

Activity中还有一个startActivityForResult()方法也是用于启动活动的,但是这方法在活动销毁时,能返回一个结果给上个活动

 

FirstActivity.java中添加

 

startActivityForResult();

参数1Intent

参数2,请求码--用于在之后的回调中判断数据的来源

 

SecondActivity中添加:

SecondActivity中给按钮注册点击事件

 

构建的Intent仅仅用于传递数据,没有将数据传递给谁的用途

数据放入到Intent,然后调用setResult()方法,专门用于向上一个活动返回数据的

setResult()

参数1,用于向上一个活动返回处理结果,一般是RESULT_OKRESULT_CANCELED

参数2,把带有数据的Intent传递回去

 

FirstActivity.java中添加

ctrl+o,重写,在SecondActivity被销毁后会回调上一个活动的onActivityResult()方法

 

 

 

posted @ 2017-03-30 08:40  努力奋斗的小丑  阅读(175)  评论(0编辑  收藏  举报