将活动添加到AndroidManifest.xml
的正确方法是什么?
实际上我在很多地方都看到过定义为
的活动<activity
android:name="MyFirstActivity"
android:label="@string/title_first_activity">
</activity>
在某些地方
<activity
android:name=".MySecondActivity"
android:label="@string/title_second_activity">
</activity>
我只是想知道放点(。)是否是向清单文件添加活动的正确方法。
我经历了很多帖子,但我没有找到确切的解决方案。 This表示不需要点(。),而this建议使用点(。)。那么正确的方法是什么?
答案 0 :(得分:11)
dot表示您的包名称。这是更简短的宣言类型。
如果您定义子类,则几乎总是为组件定义 类(Activity,Service,BroadcastReceiver和ContentProvider), 子类是通过name属性声明的。这个名字必须 包括完整的包装名称。例如,Service子类 可能会声明如下:
<manifest . . . >
<application . . . >
<service android:name="com.example.project.SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
但是,作为简写,如果字符串的第一个字符是句点,则将字符串附加到 应用程序的包名称(由元素指定 包属性)。以下分配与一个分配相同 上面:
<manifest package="com.example.project" . . . >
<application . . . >
<service android:name=".SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
启动组件时,Android会创建指定子类的实例。如果子类不是 如果指定,它将创建基类的实例。
http://developer.android.com/guide/topics/manifest/manifest-intro.html 声明类名
答案 1 :(得分:5)
是的,把点放在正确的位置.. 如果你看到eclipse自生成的活动,它看起来像。
<activity
android:name=".MyFirstActivity"
android:label="@string/app_name">
</activity>
所以它的正确方法,我们的理念可以理解
答案 2 :(得分:3)
为了这个目的,我们在manifest标签的顶部定义了包,只是我们不必一次又一次地声明它,如果任何活动在同一个包中存在它。我们只开始写点要知道它属于同一个包。所有活动都在同一个包中访问,如果你声明com.example以外的新包说com.example.sample,你只需要定义.sample.YourActivityname .thats it。我们这样做是从正确的包装中引用活动。
希望这会对你有所帮助。
答案 3 :(得分:2)
使用相对路径很好。
使路径由点而不是斜线分隔。
android:name=".one_path_level_down.MainActivity"
android:name=".one_path_level_down.DetailActivity"
顶层是您在“ package =“:
中指定的软件包级别<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.abc.myapp1" >
答案 4 :(得分:1)
http://developer.android.com/guide/topics/manifest/activity-element.html#nm
android:name The name of the class that implements the activity, a subclass of Activity. The attribute value should be a fully qualified class name
(例如,“com.example.project.ExtracurricularActivity”)。但是,作为 一个简写,如果名字的第一个字符是句号(for 例如,“。VeryracurricularActivity”),它被附加到包中 在。
中指定的名称所以给定了ApplicationManifest.xml:
...
然后因为android:name =“。view.TaskListListView”有一个领先的时期, 所以它被解释为 机器人:名称= “com.stackoverflow.android.geotask.view.TaskListListView”
答案 5 :(得分:0)
就这样做,这意味着你在这个包com.your.package
中活动
我们被提及MySecondActivity
此活动与该包
<activity
android:name="com.your.package.MySecondActivity"
android:label="@string/title_second_activity">
</activity>
答案 6 :(得分:0)
点不是必需的,但它基本上意味着:活动类存在于应用程序的同一个包中。因此,如果您的应用包是:com.your.package,那么:
所以这意味着这基本上是一回事
为了确认我的回答,请看CesarB's answer,我还获取了android source coe,我完全赞同他,这就是AndroidManifest中名称约定的工作原理: