What's the "dot" for when registering an Activity
I'm kind of a noob at programming for the Android OS. I noticed in the books I have been reading that the authors have placed a "dot" in front of the activity name when registering their activities in the manifest. I've looked around the Android developer site and I can't figure out why we need the "dot". Does the "dot" actually server a purpose? Do I need it? I have included an example below. Notice the "dot" before "NewActivity":
<activity android:name=".NewActivity"></activity>
Solution 1:
As you have noticed the point is not necessary but it basically means: the activity class lives in the same package of the app. So, if your app package is: com.my.package
then:
-
.YourActivity
means that your class is insidecom.my.package
. -
YourActivity
means that your class is insidecom.my.package
(same as above). -
.activities.YourActivity
means that your class is insidecom.my.package.activitites
. - You can even do something like:
com.my.package.activities.YourActivity
which is useful when you want to have different versions of your app and use Ant to change the references to the package automatically.
Solution 2:
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 (such as, "com.example.project.ExtracurricularActivity"). However, as a shorthand, if the first character of the name is a period (for example, ".ExtracurricularActivity"), it is appended to the package name specified in the<manifest>
.
So given ApplicationManifest.xml
:
<manifest
...
package="com.stackoverflow.android.geotask"
...>
<application ...>
<activity android:name=".view.TaskListListView" ...>
...
</application>
</manifest>
then since android:name=".view.TaskListListView"
has a leading period, so it is interpreted as android:name="com.stackoverflow.android.geotask.view.TaskListListView"
.
Solution 3:
That dot will append your package
in your application manifest.
If your package name is com.app.demo
.
<activity android:name=".HelloWorldActivity">
It means that Activity is lying inside demo package.
You can replace this with
<activity android:name="com.app.demo.HelloWorldActivity">