Android学习之路(一)——Intent的显式和隐式用法

来源:互联网 发布:数据字典中有四类条目 编辑:程序博客网 时间:2024/05/17 21:53

        大学学的专业方向就是android应用开发,不过后来由于种种原因并没有从事android工作,而是转去从事U3D的开发。久而久之android的知识也忘了不少,最近因为一些原因决定将android的知识再捡回来,但是因为以前学的也不是很扎实,于是决定从头开始,从基础开始。

        最近刚刚看到利用Intent进行Activity的跳转,然后出了一些问题,虽然最后解决了,而且在很多人看来是很小的问题。但是觉得有必要写下来,总结一下,有个记录,避免以后再犯。

        Activity,相信大家都知道,活动——Android四大组件之一,也是一个App的门面。一个好的App肯定是由多种多样五彩缤纷的Activity组合起来的。而Activity之间的跳转就涉及到了Intent的使用,Intent分为显式使用和隐式使用。

        1、Intent的显式使用

        一本Android的教程在介绍到Intent的使用的时候,大部分都只讲解它的显式用法,就像下面这个例子当中这样。

Intent intent = new Intent(MainActivity.this, AimActivity.class);startActivity(intent);


        就像上面这样,定义一个Intent变量,然后在初始化的时候明确指定了要跳转的Activity是AimActivity这个类,而当前的类则是MainActivity这个Activity。这种明确说明的用法就叫Intent的显式用法,初始化前面一个参数是当前所处的Activity,而后面一个参数则是你要跳转的目标Activity。

        2、Intent的隐式使用

        Intent的隐式使用,给我的感觉就有点像是筛选一样,与显式相反的是它并不明确说明要跳转的是那一个Activity,而是给一些设定的条件,通过这些条件去筛选符合的Activity然后去跳转。例如下面给要跳转的Activity在AndroidManifest.xml中设置一个action标签,通过action标签来进行跳转。
<activity       android:name=".AimActivity"            android:label="@string/app_name">        <intent-filter>            <action android:name="com.example.test.action_Aim" />            <category android:name="android.intent.category.DEFAULT" />        </intent-filter>      </activity> 


        上面是一个定义好action标签的Activity,接下来将对这个Activity进行调用。
Intent intent = new Intent("com.example.test.action_Aim");startActivity(intent);//或者用下面这种方式定义Intent变量//Intent intent = new Intent();//intent.setAction("com.example.test.action_Aim");

        我在练习隐式调用的时候出现了一个,现在看来比较低级的错误,这里要写出来。那就是在AndroidManifest.xml中配置新的Activity时为它设置单独的标签去筛选时,它的默认category不能丢,必须要加上,就是下面这句。



有的人可能认为我只通过action标签去筛选,这个category标签设不设置就无所谓了,就会不加。但是如果不加默认的category标签就会导致Activity中无法寻找到符合条件的Activity,我就是一直报这个错但是没有立马反应过来是这个原因,浪费了好长时间敲打。而我想说的是,哪怕你还给category标签也设置限定条件,这个默认的还是要加的,就像下面的代码这样。
<activity       android:name=".AimActivity"            android:label="@string/app_name">        <intent-filter>            <action android:name="com.example.test.action_Aim" />      <category android:name="com.example.test.category_Aim" />        <category android:name="android.intent.category.DEFAULT" />        </intent-filter>      </activity> 

        隐式调用Intent进行Activity的跳转还有好几种用法,例如不同应用程序之间的跳转等等,大家可以自己去学习调研,我这里讲出了一些我在学习Intent碰到的要点,希望能够给一些人提供帮助。这是我的第一篇博客,想到哪写到哪,也没个构思,挺乱的。
1 0
原创粉丝点击