我是一个在Android操作系统编程noob。我注意到,在我读过的书中,作者在活动名称前面放置了一个“点”,以便在清单中注册其活动。我环顾了Android开发者网站,我无法弄清楚为什么我们需要“点”。 “点”实际上是服务于一个目的吗?我需要它吗?我在下面列出了一个例子。 “NewActivity”之前,请注意“点”:什么是注册一个活动时的“点”
<activity android:name=".NewActivity"></activity>
我是一个在Android操作系统编程noob。我注意到,在我读过的书中,作者在活动名称前面放置了一个“点”,以便在清单中注册其活动。我环顾了Android开发者网站,我无法弄清楚为什么我们需要“点”。 “点”实际上是服务于一个目的吗?我需要它吗?我在下面列出了一个例子。 “NewActivity”之前,请注意“点”:什么是注册一个活动时的“点”
<activity android:name=".NewActivity"></activity>
正如您已经注意到的一点是没有必要的,但它的基本含义:在活动类生活在同一个包的应用程式。所以,如果您的应用程序包为:com.my.package
则:
.YourActivity
意味着你的类里面com.my.package
。YourActivity
表示您的班级在com.my.package
(与上面相同)内。.activities.YourActivity
表示您的班级在com.my.package.activitites
之内。com.my.package.activities.YourActivity
当您希望使用不同版本的应用程序并使用Ant自动更改对软件包的引用时,此功能非常有用。http://developer.android.com/guide/topics/manifest/activity-element.html#nm
的android:命名
实现的活动,活动的子类的类的名称。属性值应该是完全限定的类名(例如“com.example.project.ExtracurricularActivity”)。 然而,作为简写,如果名称的第一个字符是一个周期(例如,“.ExtracurricularActivity”),它被附加到在<manifest>
指定的包名称。
因此,考虑ApplicationManifest.xml
:
<manifest
...
package="com.stackoverflow.android.geotask"
...>
<application ...>
<activity android:name=".view.TaskListListView" ...>
...
</application>
</manifest>
则由于android:name=".view.TaskListListView"
具有领先期,所以它被解释为android:name="com.stackoverflow.android.geotask.view.TaskListListView"
。
该点将在您的应用程序清单中附加您的package
。
如果您的包名是com.app.demo
。
<activity android:name=".HelloWorldActivity">
这意味着活动位于演示包内。
您可以
<activity android:name="com.app.demo.HelloWorldActivity">
替换此文档似乎是说,你需要的前导点,以获得包名称预先挂起。这似乎是一场纯粹的“YourActivity”根本无法发挥作用的事故。为什么它不被解释为(很多被滥用的)默认包中的类名? – 2011-01-30 09:33:21
这不是偶然的...看看源代码;) – Cristian 2011-01-30 14:15:00