6.3 显式和隐式访问窗口

到现在为止读者已经见识过大量的Android应用程序,这些应用大多都有两个或两个以上的窗口,这就要求在某一个窗口中显示另外一个窗口。想必读者已经观察到不同显示窗口的方式。我们最开始接触到直接指定窗口类的方式称为显式访问窗口,而后来的一些程序,尤其是上一章调用系统窗口的例子又向我们展示了另外一种访问窗口的方式:隐式访问窗口。

显式访问窗口不会产生歧义,系统可以毫不犹豫地显示指定的窗口,下面是一段典型的显式访问窗口的代码。

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

startActivity(intent);

隐式访问窗口与显式访问窗口不同,前者并不需要指定窗口类的class,而只需要指定与窗口绑定的字符串(Action、Category和Data),至于如何设置Intent对象,要看访问的窗口在AndroidManifest.xml文件中是如何声明的,也就是说<intent-filter>标签里面有什么东西。下面给出一个最见到的隐式访问窗口的方式。在6.5节会详细讨论更复杂的隐式访问窗口的方式。

窗口类的声明代码。

<activity android:name=".MyActivity" >

  <intent-filter>

     <action android:name="android.intent.action.MYACTION" />

     <category android:name="android.intent.category.DEFAULT" />

  </intent-filter>

</activity>

隐式调用MyActivity窗口的代码。

Intent intent = new Intent("android.intent.action.MYACTION");

startActivity(intent);