In allen Android-Beispielen beginnen alle Namen von Aktivitäten, Diensten usw. mit einem Punkt:
%Vor%Ich habe vergessen, dies in allen Android-Projekten zu tun - aber sie funktionieren perfekt.
Meine Frage: Ist dieser führende Punkt wirklich erforderlich?
BEARBEITEN: Hier ist ein kleines Schnappschuss-Beispiel aus einer meiner Apps. Diese App funktioniert perfekt. Es verwendet keine qualifizierten Namen und verwendet keine Punkte:
%Vor%Wenn Sie den Punkt auslassen und den Paket- / Klassennamen nicht vollständig qualifizieren, funktioniert dies genau dann, wenn die angegebene Klasse nicht Teil eines Unterpakets innerhalb Ihrer Anwendung ist.
Wenn der Name Ihres Anwendungspakets com.example.myapp
ist und Sie eine Aktivitätsklasse com.example.myapp.MyActivity
:
android:name="MyActivity"
wird funktionieren. android:name=".MyActivity"
wird funktionieren. android:name="com.example.myapp.MyActivity"
wird funktionieren. Wenn Sie jedoch das gleiche Anwendungspaket und eine Aktivitätsklasse in einem Unterpaket innerhalb Ihres Quellbaums haben, z. B. com.example.myapp.myactivities.MyActivity
Dinge ändern.
android:name=".myactivities.MyActivity"
wird funktionieren android:name="com.example.myapp.myactivities.MyActivity"
wird funktionieren android:name="MyActivity"
funktioniert nicht
android:name="myactivities.MyActivity"
funktioniert nicht
3 funktioniert nicht, weil das zu dem Schluss führt, dass der Klassenname, den Sie meinen, tatsächlich com.example.myapp.MyActivity
wie im ersten Beispiel oben ist. Eine Klasse mit diesem Namen wird nicht gefunden und Sie erhalten eine Fehlermeldung.
4 funktioniert nicht, weil es wie ein vollständig qualifizierter Klassenname aussieht, dh das System interpretiert es so, dass myactivities.MyActivity
der vollständig qualifizierte Name selbst ist, nicht der echte Name von com.example.myapp.myactivities.MyActivity
.
Sie benötigen den führenden Punkt, um zu verdeutlichen, dass Sie einen relativen Pfad und keinen absoluten Pfad verwenden. Wenn Sie nur einen Klassennamen ohne Paketinformationen angeben, leitet das System davon ab, dass die Klasse das Stammverzeichnis Ihrer Anwendungspakethierarchie ist.
Der Punkt ist, den relativen Pfad zur App zu verwenden, gibt package_name
. Sie können .MyActivity
durch com.yourActivityPackage.MyActivity
Es ist erforderlich. Es ist eine Abkürzung für den Paketnamen. android: name soll den vollständigen Klassennamen angeben. Indem wir einen führenden Punkt einfügen, können wir angeben, dass der folgende Klassenname innerhalb des oben im Manifest deklarierten "Pakets" liegt.