¿Cuál es la sintaxis correcta para definir una actividad en el archivo de manifiesto

¿Cuál es la forma correcta de agregar una actividad a AndroidManifest.xml ?

En realidad he visto en muchos lugares una actividad definida como

 <activity android:name="MyFirstActivity" android:label="@string/title_first_activity"> </activity> 

Y en algunos lugares como

 <activity android:name=".MySecondActivity" android:label="@string/title_second_activity"> </activity> 

Sólo quería saber si poner un punto (.) Es la forma correcta de agregar una actividad al archivo de manifiesto.

He pasado por muchos puestos pero no he encontrado una solución exacta. Esto sugiere que el punto (.) No es necesario, mientras que esto sugiere utilizar el punto (.). ¿Cuál es la manera correcta?

Punto significa el nombre del paquete. Es un tipo más corto de declaración.

Si define una subclase, como lo haría casi siempre para las clases de componente (Actividad, Servicio, BroadcastReceiver y ContentProvider), la subclase se declarará a través de un atributo de nombre. El nombre debe incluir la designación del paquete completo. Por ejemplo, una subclase de servicio se puede declarar de la siguiente manera:

 <manifest . . . > <application . . . > <service android:name="com.example.project.SecretService" . . . > . . . </service> . . . </application> </manifest> 

Sin embargo, como una abreviatura, si el primer carácter de la cadena es un punto, la cadena se agrega al nombre del paquete de la aplicación (tal como se especifica en el atributo del paquete del elemento). La asignación siguiente es la misma que la anterior:

 <manifest package="com.example.project" . . . > <application . . . > <service android:name=".SecretService" . . . > . . . </service> . . . </application> </manifest> 

Al iniciar un componente, Android crea una instancia de la subclase con nombre. Si no se especifica una subclase, crea una instancia de la clase base.

http://developer.android.com/guide/topics/manifest/manifest-intro.html Declarar nombres de clase

Sí poner el punto es la manera correcta .. si usted ve el eclipse actividad auto generada parece.

  <activity android:name=".MyFirstActivity" android:label="@string/app_name"> </activity> 

Por lo que es el enfoque correcto, nuestro ide puede entender

Definimos el paquete en la parte superior bajo etiqueta de manifiesto para este propósito sólo que no tenemos que declararlo una y otra vez si cualquier actividad lo reside en el mismo paquete. Sólo comenzamos a escribir por punto para saber que pertenece al mismo paquete. Todas las actividades que residen en el mismo paquete se accede a través de este y si se declara nuevo paquete de com.example decir com.example.sample de lo que sólo tiene que definir. Sampl.YourActivityname.thats it.We hacer esto referir la actividad de Paquete correcto.

Espero que esto te ayudará.

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 

(Por ejemplo, "com.example.project.ExtracurricularActivity"). Sin embargo, como una abreviatura, si el primer carácter del nombre es un período (por ejemplo, ".ExtracurricularActivity"), se agrega al nombre del paquete especificado en el.

Así que dado ApplicationManifest.xml:

Entonces desde android: name = ". View.TaskListListView" tiene un período inicial, por lo que se interpreta como android: name = "com.stackoverflow.android.geotask.view.TaskListListView".

fuente

Sólo tienes que hacer esto, significa que la actividad en este paquete com.your.package se mencionan MySecondActivity esta actividad se refiere a ese paquete

 <activity android:name="com.your.package.MySecondActivity" android:label="@string/title_second_activity"> </activity> 

El punto no es necesario pero básicamente significa: la clase de actividad vive en el mismo paquete de la aplicación. Por lo tanto, si el paquete de la aplicación es: com.your.package entonces:

  1. .YourActivity significa que su clase está dentro de com.your.package.
  2. YourActivity significa que su clase está dentro de com.your.package (igual que arriba).

Así que significa que esto es básicamente lo mismo

Para confirmar mi respuesta, mira aquí la respuesta de CesarB , también busqué el origen de la fuente android y estoy totalmente de acuerdo con él, así es como funciona la convención de nombres en el AndroidManifest:

  1. Si el nombre comienza con un punto, siempre prefielo con el paquete.
  2. Si el nombre tiene un punto en cualquier otro lugar (no al principio), no lo prefija.
  3. Si el nombre no tiene ningún punto en absoluto, también prefielo con el paquete.
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.