Android:日常学习笔记(5)——探究活动(2)
使用Intent在活动之间穿梭
什么是Intent
Intent时Android程序中各组件之间进行交互的一种重要方式,他不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
Intent一般可被用于启动活动、启动服务以及发送广播等场景。分为显式和隐式。
使用显式的Intent
1.创建两个活动
2.在活动一里面显式添加Intent
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button = (Button) findViewById(R.id.button);
//在活动中可以通过findViewById来获取布局文件中定义的元素
button.setOnClickListener(new View.OnClickListener() {
//为button注册一个监听器
public void onClick(View v) {
Toast.makeText(FirstActivity.this,"You click the button",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
/**
* intent 构造方法中第一个为上下文,第二个为要穿梭到的活动类,即在上下文活动的基础上打开第二个活动。
* 通过 startActivity(intent)来执行这个Intent。
* */
}
});
}
3.点击按钮穿梭,Back键返回上下文
使用隐式Intent
说明
相比显式Intent,隐式Intent含蓄了很多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮助我们找出合适的活动(可以响应我们这个隐式Intent的活动)去启动。
实例
说明:
红色方框内的内容表明SecondActivity可以响应com.example.zy.android1.ACTION_START这个活动,category指定了可以响应的类型种类,这里是默认值。
更多隐式Intent的用法
使用隐式的Intent,我们不仅可以启动自己程序内的活动,还可以启动其他程序的活动,这使得Android多个应用之间的功能共享成为了可能。比如说你想在APP内显示网页,你没有必要去自己实现一个浏览器,而是只需要调用系统的浏览器来打开你的网页即可。
打开指定网页
手机拨号
向下一个活动传递数据
说明
在启动活动时传递数据的思路很简单,Intent提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动另一个活动后,只需把这些数据再从Intent中取出就可以了。
实例
说明:
getIntent()方法可以获得用于启动SecondActivity的Intent。
返回数据给上一个活动
说明
返回上一个活动并没有一个用于启动活动的Intent来传递数据。Activity有一个startActivityForResult()方法也是用于启动活动的,但是这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。
public void startActivityForResult(Intent intent,int requestCode)
—intent - The intent to start
—requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
实例