¿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
- Multi claves primarias en Android SQLite
- Cómo escapar% en String.Format?
- ¿Qué es diferente entre @ + id / android: list y @ id / android: list?
- Explicación básica de Contexto en android
- Sintaxis de Android destacando?
<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?
- Error de sintaxis en tokens, variableDeclarator esperado en su lugar
- AsyncTask's doInBackground (Params ... params)
- Sintaxis de intenciones de Android
- ¿Qué significa ".line" en la sintaxis del código smali? (Código Android-Smali)
- ¿Cuál es la notación de puntos entre los nombres de las clases y qué significa?
- ¿Cuál es el equivalente de Java de la Palabra clave Estática de VB.NET?
- Necesita explicación sobre esta sintaxis de inicialización de objetos Java
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:
- .YourActivity significa que su clase está dentro de com.your.package.
- 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:
- Si el nombre comienza con un punto, siempre prefielo con el paquete.
- Si el nombre tiene un punto en cualquier otro lugar (no al principio), no lo prefija.
- Si el nombre no tiene ningún punto en absoluto, también prefielo con el paquete.