Android开发之Intent使用方法

Intent 译为 意图,用于android四大组件间的相互调用、传值。

activity之间的启动一般用法为

 Intent intent=new Intent(FirActivity.this,SecActivity.class);

intent可通过put***("key",value);携带参数

通过StartActivity(intent);启动该intent;

目标页 通过 getIntent("key") 获取intent携带的对应参数。

Intent 有七大属性:1Component Name2Action3category4data5Type6Extra7Flag

(一)ComponentName

Intent intent =new Intent();

ComponentNamecomponent= new ComponentName(this, TwoActivity.class);

intent.setComponent(component);

等价于 Intent intent=new Intent();

intent.setClass(this,TwoActivity.class);

等价于 Intent intent=new Intent();

intent.setClassName(this,"com.kurt.demo.TwoActivity");

等价于 Intent intent=new Intent(this,TwoActivity.class);

(二)Action&category

1:如果intent中不定义action及category,intent可与任意<intent-filter>匹配;

2:如果<intent-filter>不定义action,则无法与任何配置有action的intent匹配;

3:<intent-filter>中的category完全包含intent配置的全部category,该intent才可生效。<intent-filte

r>中多余的category不影响intent。

4:intent请求中的action和<intent-filter>中的某一条action匹配,则匹配成功。


(三)data%type

源码中  setData 会把Type置为null,setType 会把Data置为null;如果需要同时设置data及type,可使用setDataAndType();

Data的参数是Uri;

Type表示要查找的文件类型,如{".3gp", "video/3gpp"}, 


(四) Extra

通过intent.putExtra()的形式在多个Activity之间进行数据交换。

(五)Flags 

Intent 可调用addFlags()方法来为Intent 添加控制标记。

FLAG_ ACTIVITY_CLEAR_TOP:(效果同Activity LaunchModesingleTask

如果在栈中已经有该Activity的实例,就重用该实例。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

FLAG_ACTIVITY_SINGLE_TOP:(效果同Activity L aunchModesingleTop

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,而不会创建新的Activity 对象。

FLAG_ ACTIVITY_NEW_TASK:

示例代码:

Intent intent = new Intent(this,SecActivity.class);

//Activity栈中处于MainActivity主页面之上的Activity都弹出。

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值