可能重复:结果 What's在“点”的登记一个活动时
在活动,服务等所有Android实例名称都开始用点:
<活动机器人:MyActivityNAME = />我忘了这样做的所有Android项目 - 但他们做的工作完美
。我的问题:是否真正需要这个前导点
编辑:下面是从我的应用程序的一个小快照示例。这个应用程序运行完美。它不使用合格的名称,它不使用点:
<活动 机器人:出口=假 机器人:名字=Tankvorgaenge> &所述;意图滤光器> <作用机器人:名字=android.intent.action.SEARCH/> &所述; /意图滤光器> &所述;元数据 机器人:名字=android.app.searchable 机器人:资源=@ XML /搜索/>< /活性GT;<活动机器人:名字=Tankvorgangdetails/><活动机器人:名字=Tankvorgangdetailsbearbeiten/><活动机器人:名字=TankvorgangUebersicht/><活动机器人:名字=Verbrauch/><服务机器人:名字=则将MyService/>解决方案
忽略的点,而不是完全限定包/类名,当且仅当指定的类是不是你的应用程序中的子包的一部分,将工作。
如果您的应用程序包的名字是 com.example.myapp ,和你有一个活动类 com.example.myapp.MyActivity :
但是,如果你在你的源代码树中的一个子包相同的应用程序包和活动类,如 com.example.myapp.myactivities.MyActivity 事情的变化。
3不起作用,因为这将推断出你的意思是类名称实际上 com.example.myapp.MyActivity 就像上面的第一个例子。具有此名称的类将不会被发现,你会得到一个错误。
4不起作用,因为它看起来像一个完全合格的类名,也就是系统会间preT这意味着 myactivities.MyActivity 是完全合格的名称本身,而不是真正的名称 com.example.myapp.myactivities.MyActivity 。
您需要前导点这里澄清,您使用的是相对路径,而不是绝对路径。如果不带包的信息仅指定一个类名都,系统推断出这一类是在你的应用程序包层次的根。
Possible Duplicate: What's the “dot” for when registering an Activity
In all Android examples names of Activities, Services, etc. all start with a dot:
<activity android:name=".MyActivity" />I forgot to do this in all Android projects - but they do work perfect.
My question: Is this leading dot really required?
EDIT: Here's a small snapshot example from one of my apps. This app works perfect. It doesn't use qualified names and it doesn't use dots:
<activity android:exported="false" android:name="Tankvorgaenge" > <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity> <activity android:name="Tankvorgangdetails" /> <activity android:name="Tankvorgangdetailsbearbeiten" /> <activity android:name="TankvorgangUebersicht" /> <activity android:name="Verbrauch" /> <service android:name="MyService" />解决方案
Omitting the dot and not fully qualifying the package/class name will work if and only if the specified class is not part of a subpackage within your application.
If your application package name is com.example.myapp, and you have an activity class com.example.myapp.MyActivity:
But if you have the same application package and an activity class in a subpackage within your source tree such as com.example.myapp.myactivities.MyActivity things change.
3 doesn't work because that will infer that the class name you mean is actually com.example.myapp.MyActivity like in the first example above. A class with this name won't be found and you'll get an error.
4 doesn't work because it looks like a fully qualified class name, that is the system will interpret it to mean that myactivities.MyActivity is the fully qualified name itself, not the real name of com.example.myapp.myactivities.MyActivity.
You need the leading dot here to clarify that you're using a relative path, not an absolute path. If you specify just a class name with no package info at all, the system infers that the class is at the root of your application package hierarchy.
更多推荐
在领先的android点:名真正需要的?
发布评论