Führender Punkt in Android: Name wirklich benötigt? [Duplikat]

8

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%     
Harald Wilhelm 26.08.2012, 15:55
quelle

4 Antworten

19

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 :

haben
  1. android:name="MyActivity" wird funktionieren.
  2. android:name=".MyActivity" wird funktionieren.
  3. 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.

  1. android:name=".myactivities.MyActivity" wird funktionieren
  2. android:name="com.example.myapp.myactivities.MyActivity" wird funktionieren
  3. android:name="MyActivity" funktioniert nicht
  4. 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.

    
adamp 26.08.2012, 19:21
quelle
2

Der Punkt ist, den relativen Pfad zur App zu verwenden, gibt package_name . Sie können .MyActivity durch com.yourActivityPackage.MyActivity

ersetzen     
Brais Gabin 26.08.2012 16:01
quelle
1

Ja, das activity[android:name] sollte entweder ein vollständig qualifiziertes package.Class angeben, oder wenn es mit einem Punkt beginnt, wird es an das Paket application angehängt.

Siehe doc

    
Peter V 26.08.2012 16:02
quelle
0

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.

    
Sameer 26.08.2012 15:59
quelle

Tags und Links