Android基础之Intent
来源:互联网 发布:大专学软件开发 编辑:程序博客网 时间:2024/04/28 20:35
今天主要是学习了Intent的用法以及Activity的生命周期
1、Intent
Intent是安卓程序中各个组件之间进行交互的一种重要的方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
Intent的用法大致可以分为两种,一种是显式Intent,一种是隐示Intent。
(1)显式Intent
使用Intent(Context packageContext,Class<?>cls),其中第一个参数Context要求提供一个启动活动的上下文,第二个参数Class则是指定想要启动的目标
活动,通过这个构造函数就可以构造出Intent的“意图”。
具体用法见部分代码:
Intent intent=new Intent(FirstActivity.this,SecondActivity.class)
startActivity(intent)
其中FirstActivity.this作为上下文,即为活动的运行提供一个环境,SecondActivity.class参数表示目标活动
我们的意图就是在FirstActivity这个活动的基础上来打开SecondActivity这个活动。
(2)隐式Intent
它并不明确指出我们要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent并帮我们找出合适的活动去启动
所谓的匹配指的是在AndroidManifest.xml中注册的action和category信息和Intent中指定的action和category信息完全一样。
具体用法见部分代码:
androidManifest.xml中的代码
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</inter-filter>
FirstActivity中的代码:
Intent intent=new Intent ("com.example.activitytest.ACTION_START")
startActivity(intent)
由于android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法时候会自动将这个category添加到Intent中去。
注意:每个Intent中只能指定一个action,但是却能指定多个categroy
在上述的FirstActivity中在添加一个category
FirstActivity中的代码:
Intent intent=new Intent ("com.example.activitytest.ACTION_START")
intent.addCategory("com.example.activitytest.MY_CATEGORY")
startActivity(intent)
此时一定要修改以下注册文件,否则程序将无法运行,因为找不到与intent相同的修改后的androidManifest.xml中的代码
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY" />
</inter-filter>
注意:保险起见,还是将默认的category保留。更多的隐示Intent方法主要是修改intent的参数,这里就不一一列举了。
2.在活动中传递数据
(1)向下一个活动传送数据
使用Intent提供给我们的putExtra()方法的重载,可以将数据暂时保存在Intent中,启动了另一个活动,只需
要再将数据从Intent中取出就可以了。
FirstActivity中的部分代码:
String data="Hello SecondActivity"
Intent intent=new Intent (FirstActivity.this,SecondActivity.class)
intent.putExtra("extra_data,data")
startActivity(intent);
这里采用显式Intent的方式来启动SecondActivity,并通过putExtra()方法传递了一个字符串。注意putExtra()方法中一个是键值,一个是真正的数值
SecondActivity中的部分代码
Intent intent=getIntent()
String data=intent.getStringExtra("extra_data")
Log.d("secondActivity",data);
首先通过getIntent()方法获取到用于启动SecondActivity的Intent,然后调用getStringExtra方传入相应的键值,就可以得到启动该活动的活动向Intent中存入的数据了。
(2)返回数据给上一个活动
1>Activity中有一个startActivityForResult()方法用于启动活动,但是这个方法期望在活动被销毁的时候能够返回数据给上一个活动。
FirstActivity中的部分代码:
Intent intent =new Intent (FirstActivity.this,SecondActivity.class)
startActivityForResult(intent,1)
这段代码就是说当SecondActivity活动被销毁的时候,会返回数据给上一个活动,也就是说启动该活动的活动,及是FirstActicity
其中startActivityForResult()中的第一个参数是intent,第二个参数是请求码,请求码只要是唯一值就可以了。
2>在SecondActivity中添加返回数据的逻辑
Intent intent =new Intent();
intent.putExtra("data_return","Hello FirstActivity")
setResult(RESULT_OK,intent)
finish();
在这段代码中的intent只是起到了存储以及传递数据的作用,因为使用的是startActivityForResult期望返回数据,所以必须定义数据逻辑
setResult()方法非常重要,是用于向上一个活动返回数据的,第一个参数一般都只是使用RESULT_OK,第二个参数把带有数据的Intent传递回去。
3>在FirstActivity中重写onActivityResult()方法来获得返回的数据
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
switch(requestCode){
case 1:
if(resultCode==RESULT_OK)
{
String returndData=data.getStringExtra("data_return")
Log.d("FirstActivity",returndata)
}
break;
}
}
其中onActivityresult方法有三个参数,第一个参数是请求码,即我们在启动活动时传入的请求码。
第二个是我们在返回数据是时传入的处理结果,第三个参数是返回数据的Intent。
3.活动的生命周期
记住:onCreate onStart onResume onPause omStop onDestroy onRestart等七个生存期
今天到此为止,明天进行UI的代码实践。
最后,送给自己一句话:行胜于言!!!加油!!!
- Android基础之Intent
- Android基础之Intent和Intent Filter
- Android基础之Intent 和 Intent 过滤器
- Android基础学习之Intent
- Android基础之Intent详解
- Android基础之Intent篇
- Android基础组件之Intent
- Android开发基础之Intent
- Android基础篇之Intent(一)-Intent机制
- Android基础篇之Intent(二)-Intent使用
- android之Intent几个基础用法示例
- Android基础之Intent(待完善)
- android之Intent几个基础用法示例
- Android基础学习之Intent常用方法
- 【Android基础】(5)应用核心之Intent
- android基础篇之Intent用法
- Android基础之Intent Flag案例分析
- Android基础之Intent的flag
- 8.对象初始化
- 【网络流之最小割模型】poj3469 BZOJ3144 UVA1212
- 【HDU】 2546 饭卡
- 对于CV&MV的思考
- WC2008观光游览【BZOJ2595】【斯坦纳树】
- Android基础之Intent
- 从今天开始啊,我要开始写博客啦!!
- ios8和ios7的主要区别
- bzoj2440: [中山市选2011]完全平方数
- 深入学习、理解select语句、delete语句以及其他SQL语句
- Oracle 通过存储过程给关联者发信
- 天池冠军比赛心得体会
- iptables基础说明
- Spring注解之事务管理