使用Intent在活动中跳转:
1,显示Intent
新建活动
添加布局
SecondActivity不是主活动,不需要<intent-filter>标签里的内容
Intent是Android程序中各组件之间进行交互的一种方式。
不仅可指明当前组件想要执行的动作,还可以在不同组件之间传递数据
一般被用于启动活动,启动服务以及发送广播等场景
Intent有多个构造函数的重载,
Intent(Context packageContext, Class<?>cls)
参数1:Context要求提供一个启动活动的上下文
参数2:Class指定想要启动的目标活动
作用:构建出Intent的意图
Activity类中提供一个startActivity()方法,专门用于启动活动的,接受一个Intent参数,
点击button2,返回button1界面
2,隐式Intent
不明确指出将要去启动哪一个活动,而是指定了一系列更为抽象的action和category等信息
然后交给系统去分析这个intent,并帮我们找到合适的活动去启动
<action>标签指明了当前活动可以响应com.quanwei1.yehowah.activitytest.ACTION_START这个action
<category>标签包含一些附加信息,android.intent.category.DEFAULT是一种默认的category
在调用startActivity()方法时自动将这个category添加到intent中
只有<action><category>同时能够匹配到Intent中指定的action和category时,才能响应intent
若多个category,intent只有一个默认的category
3,隐式Intent其他用法
隐式intent,不仅要启动本身程序内的活动,还可启动其他程序的活动,
这使得Android多个应用程序之间的功能共享成为了可能
Intent.ACTION_VIEW这是一个Android系统内置的动作,其常量值为Android.intent.action.VIEW
然后通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象
调用Intent的setDate()方法将这个Uri对象传递进去
4,向下一个活动传递数据
在启动活动时传递数据,Intent中的putExtra方法的重载,可将要传输的数据暂存在Intent中,启动了
另一个活动后,只需要把这些数据从Intent中取出来就可以了
FirstActivity.java中修改
putExtra("extra_data",data);
参数1:键,用于后面从Intent中取值
参数2:真正要传递的数据
SecondActivity.java中修改
getIntent()方法获取用于启动SecondActivity的Intent
然后调用getStringExtra()方法获取传递数据,
如果数据是整型,getIntExtra()
如果数据是布尔类型,getBooleanExtra()
点击button1出现调试打印数据,然后跳转到button2
4,返回数据给上一个活动
之前的Button2直接关闭,然后进入Button1活动中,
Activity中还有一个startActivityForResult()方法也是用于启动活动的,但是这方法在活动销毁时,能返回一个结果给上个活动
在FirstActivity.java中添加
startActivityForResult();
参数1,Intent
参数2,请求码--用于在之后的回调中判断数据的来源
在SecondActivity中添加:
在SecondActivity中给按钮注册点击事件
构建的Intent仅仅用于传递数据,没有将数据传递给谁的用途
数据放入到Intent中,然后调用setResult()方法,专门用于向上一个活动返回数据的
setResult();
参数1,用于向上一个活动返回处理结果,一般是RESULT_OK或RESULT_CANCELED
参数2,把带有数据的Intent传递回去
在FirstActivity.java中添加
ctrl+o,重写,在SecondActivity被销毁后会回调上一个活动的onActivityResult()方法