2011-09-07 16 views
5

Cosa significa il punto?Manifest Android: perché a volte ". <classname>" invece di "<classname>"?

maggior parte del tempo ho appena scritto che:

<activity android:name="OneActivity" ...>...</activity> 

Ma a volte vedo nel file generato automaticamente:

<activity android:name=".OtherActivity" ...>...</activity> 

E anche nel Docs for Service vedo che scrivono

<manifest ... > 
    ... 
    <application ... > 
     <service android:name=".ExampleService" /> 
     ... 
    </application> 
</manifest> 

Ma non ho mai visto alcuna differenza nel provare l'uno o l'altro.

+0

Possibile duplicato di [È necessario inserire il nome dell'attività in AndroidManifest.xml per iniziare con un punto?] (Http://stackoverflow.com/questions/3608017/is-the-activity-name-in-androidmanifest-xml- required-to-start-with-a-dot) –

risposta

3

Dal the Android Dev Guide < activity > reference

Il nome della classe che implementa l'attività, una sottoclasse di attività. Il valore dell'attributo deve essere un nome di classe completo (ad esempio "com.example.project.ExtracurricularActivity"). Tuttavia, come una stenografia, se il primo carattere del nome è un punto (ad esempio ".ExtracurricularActivity"), viene aggiunto al nome del pacchetto specificato nell'elemento. C'è non predefinito. Il nome deve essere specificato.

credito: jaywon da Activity Name in android Manifest in Stack Overflow

2

Potete trovare alcune differenze se si crea più di un pacchetto, controlli Android per la classe nella cartella predefinita che si potrebbe avere accennato durante la creazione del progetto.

Per quanto riguarda il servizio, aggiunge automaticamente "servizi" al nome del pacchetto e cerca il servizio al suo interno. quindi è più simile a percorsi relativi e assoluti, se si posiziona il proprio servizio in un nome di pacchetto diverso, si dovrà menzionare l'intero percorso del pacchetto con il nome della classe. Si applica ai ricevitori troppo ..

4

Se si dà un'occhiata a sopra, non v'è definizione del pacchetto come

package="app.package.name" 

Il nome della classe con il punto significa che questa classe è sotto il pacchetto definito. Se si dispone di un altro pacchetto come

app.package.name.another 

e c'è una classe in quel pacchetto, si deve il nome della classe definita come

<activity android:name=".another.activityname" 
1

per la raccolta di qualsiasi attività Android richiede nome completo ... per questo I nostri file manifesto ha attributo (ad esempio package = "TestCom") Quindi, per rendere più completo mettiamo punto prima del nome dell'attività (es android: name = "FirstActivity.")

Se lo fai non voglio usare il punto prima di ogni attività, quindi metti semplicemente il punto dopo l'attributo del pacchetto nel tag manifest (es. package = "com.test.") e scrivere il nome dell'attività senza punto (ad es. android: name = "FirstActivity") In modo che possa complessivamente creare un nome completo (es. com.test.FirstActivity)

+0

funziona completamente senza i punti. Il mio pacco non ha punti alla fine, e anche i miei nomi di classe non hanno punti davanti a loro. Forse l'hanno già cambiato per renderlo più utilizzabile. – erikbwork

-2

Il punto prima del nome significa che è un file nascosto che non sarà visto da altri. Puoi vedere su youtube come nascondere i file per cella Android.

+0

vedi youtube su come nascondere il file per cella Android. –

Problemi correlati