Android显示意图和隐式意图

显式意图和隐式意图的作用:

都是来进行页面的跳转的


显式意图和隐式意图的区别:

(一般如果是开启自己应用程序的自定义的一个Activity时,都用显性意图来完成)


显式意图:必须要指定被开启的Activity的类名或者路径名

实际上是:只能激活自己应用程序内部的组件,效率高


主要步骤:    

//创建意图对象

Intent 意图对象= new Intent();

//用意图对象,激活自己应用程序内部自定义的一个组件,下面两个方法任意一个

意图对象.setClass(上下文,要跳转过去页面的类名.class);

意图对象.setClassName("包名","包名.类名");

            //运行意图,跳转到自定义界面上

            startActivity(意图对象);



隐式意图:

只需要指定动作action和category信息就可以了(一般开启系统自带的应用的界面时,如电话拨号器)

实际上是:不仅可以激活自己应用程序内部的组件,还可以激活别的应用程序的界面,效率低.

注意:激活别的应用程序的界面,那个组件必须要在AndroidManifest.xml中暴露了<action>和<category>方可,

主要步骤:

a.//跳转过去的自定义Activity需要在AndroidManifest.xml中声明意图过滤器(intent-file);

      必须配置:<action android:name="自定义(一般是所用包名.动作)"/>:主要是为隐示意图调用设置暗号;

            和<category android:name="不能自定义"/>:主要是指定UI(Activity)的额外配置信息,

            比如Default就是该界面不产生图标,比如Car_dock就是在车载模式下运行.

        b.开启隐式意图:

             //1.创建一个意图对象

                同时还可以设置动作:Intent Intent对象= new Intent("对应AndroidManifest.xml中                    action的内容");

                IntentIntent对象= new Intent();

            //2.为意图设置动作,(此调用自定义的界面组件,如果是调用安卓系统的,要按格式)

                Intent对象.setAction("对应AndroidManifest.xml中action的内容");

           //3.为意图设置一个category

                Intent对象.addCategory("对应AndroidManifest.xml中category的内容");

           //4.开启意图

                startActivity(Intent对象);


A.隐式意图加强版:(除了上面的步骤都有外,只写增加的步骤)

    跳转过去的自定义Activity需要在AndroidManifest.xml中的意图过滤器(intent-file)额外声明;

    二者任意一个皆可以,没必要全都定义,在<data>里一般就是设置各种条件的

    <data android:scheme="自定义" android:host="自定义"/>

固定模式:text/plain表示文件模式.配置mimeType的数据:必须为xxx/xxx的格式否则会报异常  

    B.开启隐式意图:

    意图对象.setData(Uri.parse("scheme里的内容://host里的内容"));

    注意: ":" 是固定模式,不可以缺失.出现异常不易发现.

    意图对象.addCategory("mimeType里的内容")

    注意:以上两个方法不能同时存在,会相互清除对方的数据,因此

        当两个数据皆要设置时:意图对象.setDataAndType(data, type);//data是Uri数据,type           是"mimeType里的内容"

注意:若是在配置文件中写多个scheme,只需要写一个setDate即可



使用Intent进行数据的传递:

八大基本数据类型,String,数组,ArrayList<String>, Bundle数据捆, 实现序列化接口的javabean。

把数据绑定在Intent对象上:Intent对象.putExtra("xxx(key值自定义,不过获取数据时,要用这个值)",数据);

基本数据类型都可以传递,parcelable(是android特有的),serializable(序列化)数据也可以,不过二者必须实现接口才可以用intent传递数据.


获取传递过来的意图对象:getIntent()

得到绑定在传递过来意图对象的数据:Intent对象.get传过来的数据类型(首字母大写)Extra("key值");//

注意:

a.必须要获取到传递过来的意图对象,方可获取意图对象身上的数据

b.key值是暗号,必须一致方可的到数据.且传过什么数据类型,方法就要是对应的类型.


使用Intent进行数据传递的另一种方式:(界面A开启界面B,界面B把需要回传的数据传给界面A)

resultCode:requestCode:请求码,目前用不到,设置为0             data:携带数据的intent对象

设置数据:setResult(resultCode, data);(把当前界面(B)的数据返回给开启我的界面(A))

    注意:设置resultCode是用来帮助获取数据界面区分结果是有哪个界面返回的。

        2.界面B需要使用intent封装结果数据,使用setResult方法绑定intent,并调用finish关闭界面B。       

         intent:执行的intent对象,requestCode:请求码,目前用不到,设置为0       

获取数据:startActivityForResult(intent,requestCode);//开启新界面,获取返回值,

       1.界面A需要使用startActivityForResult方式开启界面B。

       3.界面A需要复写OnActivityResult方法,接收B界面发送过来的Invent,获取其携带数据   

requestCode 和 resultCode 是用来区分结果是有哪个界面返回的。data是得到回传携带数据的Intent对象

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

    }

}       

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容