安卓活动跳转之Intent使用
如何让自己的的程序能够在活动之间来回切换,变的高大上呢?使用Intent可以实现这一点。
Intent(中文意思:意图)大致可以分为显示Intent和隐式Intent。
显示Intent很直白,一般只需两个语句即可实现活动的跳转:
Intent intent = new Intent(MainLayoutActivity.this , DialogActivity.class);
//创建一个Intent对象,第一个参数表示上下文,第二个参数表示要启动的目标活动,也就是说在
//MainLayoutActivity这个活动的基础上启动DialogActivity这个活动
startActivity(intent);//然后调用Activity类提供的startAcitivity()方法,用于启动一个活动
隐式Intent相对较复杂,但他比较灵活,他并不明确指出我们要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动。合适的活动是指满足Intent中指定的action和category信息的活动。那么如何让活动成为一个合适的活动,并让其他活动能够通过隐式Intent启动该活动呢?我们需要进行如下设置:
打开AndroidManifest.xml文件,并找到改活动相应的代码部分(假定该活动名称叫NormalActivity),进行如下配置
<activity android:name=".NormalActivity">
<intent-filter>//中文名可翻译为:意图过滤
//将动作名称命名为:com.example.activitytest.ACTION.START
<action android:name="com.example.activitytest.ACTION.START" />
//将分类名称命名为:默认分类
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
然后其他活动的.java文件中添加如下代码,即可实现活动的跳转:
//直接引用NormalActivity活动的action的字符串传入Intent
Intent intent = new Intent("com.example.activitytest.ACTION.START");
startActivity(intent);
第一行代码表示我们想要启动能够响应com.example.activitytest.ACTION.START这个action的活动,这里并没有添加category的信息,但是还是可以启动NormalActivity这个活动,这是为什么呢?这是因为"android.intent.category.DEFAULT"是一种默认的category,在调用startActivity()这个方法的时候会自动将这个category添加到这个Intent中。你也可以指定一个活动的category,然后使用addCategory()这个方法给Intent添加category,从而实现灵活的活动跳转。
-----------END--------------