可能的重复:
注册活动时的“点”是什么意思
在所有 Android 示例中,活动、服务等名称均以点开头:
<activity android:name=".MyActivity" />
我忘记在所有 Android 项目中都这样做 - 但它们确实工作得很好。
我的问题:这个前导点真的需要吗?
EDIT:这是我的一个应用程序的一个小快照示例。这个应用程序运行完美。它不使用限定名称,也不使用点:
<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" />
当且仅当指定的类不是应用程序中子包的一部分时,省略点并且不完全限定包/类名称才有效。
如果您的应用程序包名称是com.example.myapp
,你有一个活动课com.example.myapp.MyActivity
:
-
android:name="MyActivity"
将工作。
-
android:name=".MyActivity"
将工作。
-
android:name="com.example.myapp.MyActivity"
将工作。
但是,如果您的源树中的子包中有相同的应用程序包和活动类,例如com.example.myapp.myactivities.MyActivity
事情会改变的。
-
android:name=".myactivities.MyActivity"
将工作
-
android:name="com.example.myapp.myactivities.MyActivity"
将工作
-
android:name="MyActivity"
不管用
-
android:name="myactivities.MyActivity"
不管用
3 不起作用,因为这会推断出您所说的类名实际上是com.example.myapp.MyActivity
就像上面的第一个例子一样。将找不到具有此名称的类,并且您会收到错误。
4 不起作用,因为它看起来像一个完全限定的类名,即系统会将其解释为myactivities.MyActivity
是完全限定名称本身,而不是真实姓名com.example.myapp.myactivities.MyActivity
.
您需要此处的前导点来澄清您使用的是相对路径,而不是绝对路径。如果您仅指定类名而根本没有包信息,则系统会推断该类位于应用程序包层次结构的根部。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)